当前位置 博文首页 > 闫玉林的博客:在Navicat里连接MongoDB,使用查询语句正则匹配修

    闫玉林的博客:在Navicat里连接MongoDB,使用查询语句正则匹配修

    作者:[db:作者] 时间:2021-08-17 18:55

    业务场景

    • CMS,内容管理系统,主要是新增编辑新闻,发布新闻
    • 使用MySQL存储新闻的各个字段,使用MongoDB存储文章正文(带样式的正文比较大)
    • 某网站升级改版,使用新系统。数据和附件迁移后,发现正文中的图片链接是访问原有的老系统文件服务的。老的系统不久后会关闭,文件附件已经拷贝过来。需要把老的图片附件链接,换成新的绝对路径的。

    解决

    • 使用Navicat连接MongoDB
    • 使用查询功能,编写查找替换语句
    • 核心是正则匹配,正则替换,替换完成后再更新记录即可
    • 可以找出规则,写出正则;先找一条测试,再整个collection执行
    • 单个测试
    // http://file.hnxf.huainan.gov.cn//584782d
    db.contentMongoEO.find({
    "_id":551494506
    }).forEach(function(result){
    var  newstr=result.content;
    newstr=newstr.replace(/http:\/\/file.hnxf.huainan.gov.cn\/\/584782d/g,"/oldfiles/xfjoldfiles/584782d");
    print(newstr);
    result.content=newstr;
    db.contentMongoEO.save(result);
    });
    
    • 测试没问题,整个执行
    db.contentMongoEO.find({
    'content':{'$regex':/http:\/\/file.hnxf.huainan.gov.cn\/\/584782d/}
    }).forEach(function(result){
    var  newstr=result.content;
    newstr=newstr.replace(/http:\/\/file.hnxf.huainan.gov.cn\/\/584782d/g,"/oldfiles/xfjoldfiles/584782d");
    //print(newstr);
    result.content=newstr;
    db.contentMongoEO.save(result);
    });
    
    cs
    下一篇:没有了