使用json中的数据更新多个文档中的相同字段

时间:2017-02-09 12:24:21

标签: json mongodb

我的MongoDB看起来像这样:

[
    {
        "status" : 0,
        "name" : "Yaknow",
        "email" : "yaknow@not.this",
        "_id" : "5875a42ea469f40c684de385"
    },
    {
        "status" : 1,
        "name" : "johnk",
        "email" : "johnk@not@this",
        "_id" : "586e31c6ce07af6f891f80fd"
    }
]

与此同时,所有的电子邮件都发生了变化,我得到了一个新的Json:

[
    {
        "email" : "yaknow@gmai.new",
        "_id" : "5875a42ea469f40c684de385"
    },
    {
        "email" : "johnk@gmail.new",
        "_id" : "586e31c6ce07af6f891f80fd"
    }
]

如何更新所有电子邮件?

1 个答案:

答案 0 :(得分:2)

mongodb中没有运算符允许您通过替换字符串的某些部分来修改字符串值。您应该获取文档,然后是for each文档,您应该在本地准备更新的值并更新文档:

db.collection.find({}).forEach(function(doc){ 
    var newEmail = doc.email.substr(0, doc.email.indexOf('@')) + "@gmail.new";
    db.collection.update({_id: doc._id}, {$set:{email: newEmail}}); 
});