此处为文档中的示例字段:
"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})
答案 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
});
});