2014-10-31 116 views
0

在這裏,在一個文檔中的示例性現場:我可以搜索並替換MongoDB中的字段部分嗎?

"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

不,你不能。運氣不好,因爲數據庫還沒有提供這樣的功能。
你可以這樣做:

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 
    }); 
});