更新mongodb中数组的所有匹配元素

时间:2016-04-06 09:56:10

标签: mongodb nosql

我的数组如下:

{
    "_id" : ObjectId("5704cf4da64ffd34d7285fef"),
    "names" : [ 
        {
            "name" : "harjeet"
        }, 
        {
            "name" : "harjeet123"
        }, 
        {
            "name" : "harjeet1234"
        }
    ]
}

我需要将名称更新为" harjeet12345",所有这些。

我的研究发现:https://jira.mongodb.org/browse/SERVER-1243

有没有办法执行此更新

2 个答案:

答案 0 :(得分:1)

var nameStr = "harjeet12345";
c.find().forEach(function (doc) {
    var newNameArray = [];
    doc.names.forEach(function (y) {
        var newName = {name : "zeugor"}
        newNameArray.push(newName);
    });

    c.update(
        { _id: doc._id},
        {"$set" : {"names" : newNameArray}}
    )    
})

答案 1 :(得分:0)

您知道这是mongodb嵌入式文档和文档数组的问题。由于mongodb MongoDB jira已批准其修改,但仍未决定,并希望在下一版本中看到。 这是你现在可以使用的东西

db.yourcollection.find({}).forEach(function(tmp){
    names = [];
    tmp.names.forEach(function(name){
        names.push({name : 'rummykhan'})
    });
    tmp.names = names;
    db.yourcollection.save(tmp)
})