Mongodb替换字符串中的单词

Sam*_*ikh 5 mongodb mongodb-query

所以我有一个mongodb文档,其中包含这样的字段

Image : http://static14.com/p/Inc.5-Black-Sandals-5131-2713231-7-zoom.jpg
Run Code Online (Sandbox Code Playgroud)

我想用一些其他文本替换字符串中的缩放,以便:

   Image : http://static14.com/p/Inc.5-Black-Sandals-5131-2713231-7-product2.jpg
Run Code Online (Sandbox Code Playgroud)

有可能吗?

chr*_*dam 8

您可以使用mongo的forEach()游标方法与$set运算符进行原子更新:

db.collection.find({}).snapshot().forEach(function(doc) {
    var updated_url = doc.Image.replace('zoom', 'product2');
    db.collection.update(
        {"_id": doc._id}, 
        { "$set": { "Image": updated_url } }
    );
});
Run Code Online (Sandbox Code Playgroud)

鉴于要更新的​​非常大的集合,您可以加快一些事情bulkWrite并重组您的更新操作以批量发送:

var ops = [];
db.collection.find({}).snapshot().forEach(function(doc) {
    ops.push({
        "updateOne": {
            "filter": { "_id": doc._id },
            "update": { "$set": { "Image": doc.Image.replace('zoom', 'product2') } }
        }
    });

    if ( ops.length === 500 ) {
        db.collection.bulkWrite(ops);
        ops = [];
    }
})

if ( ops.length > 0 )  
    db.collection.bulkWrite(ops);
Run Code Online (Sandbox Code Playgroud)