我可以在MongoDB中搜索和替换字段的部分吗?

时间:2014-10-31 15:35:01

标签: mongodb search replace

此处为文档中的示例字段:

  "html": "<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0 Strict\/\/EN\" \"http:\/\/www.test.org\/TR\/xhtml1\/DTD\/test.dtd\">\n<html xmlns=\"http:\/\/www.test.org\/1999\/xhtm [...]",

埋在字段html中的是我需要使用的两个ID号。我需要搜索一个id并替换它。

我可以修改以下命令吗?

db.user.update({html:"54506251bf2e4e753d8b5b69"},{$set:{html:"542de00c763f4a7f558be174"}},{multi:true})

1 个答案:

答案 0 :(得分:0)

不,你不能。运气不好,因为数据库尚未提供此类功能 你可以这样做:

var oldId = "54506251bf2e4e753d8b5b69";
var newId = "542de00c763f4a7f558be174";
db.user.find({
    html : {
        $regex : oldId
    }
}, {
    html : 1
}).forEach(function(doc) {
    // fetch the field and modify it using JavaScript, then replace the one in database
    var newHtml = doc.html.replace(oldId, newId);
    db.user.update({
        _id : doc._id,
        html : {
            $regex : oldId
        }
    }, {
        $set : {
            html : newHtml
        }
    }, {
        multi : true
    });
});