MongoDb中多次更新的问题

时间:2013-04-01 12:01:29

标签: node.js mongodb node-mongodb-native

我有像这样的mongo结构:

{
        "_id" : ObjectId("51596b7e469b9c3816000001"),
        "company" : {
                "_id" : "ade2fd0ec9b8b5e9152e0155",
                "title" : "LO3426546457"
        },
}
{
        "_id" : ObjectId("51596cef469b9c3816000008"),
        "company" : {
                "_id" : "ade2fd0ec9b8b5e9152e0155",
                "title" : "LO3426546457"
        },
}
{
        "_id" : ObjectId("51596cc3469b9c3816000007"),
        "company" : {
                "_id" : "ade2fd0ec9b8b5e9152e0155",
                "title" : "LO3426546457"
        }        
}

我想更改具有特定“_id”的对象的所有“标题”字段。 我喜欢这个:

Collections.UsersCollection.update({
    'company._id': 'ade2fd0ec9b8b5e9152e0155'
}, {
    $set: {
        'company': { _id: 'ade2fd0ec9b8b5e9152e0155', title: 'blablabla' }
        // I also tried: 'company.title': 'blablabla'
    }
}, false, true);

在执行Node.js中的代码(我使用node-mongodb-native)之后,mongo只更新一个文档。

但如果我在Mongo Shell(mongo.exe)上执行该命令,一切正常并更新所有文档。

有什么问题?

2 个答案:

答案 0 :(得分:2)

默认情况下,mongo仅更新单个文档。 http://docs.mongodb.org/manual/reference/method/db.collection.update/

使用多选项进行多文档更新。

答案 1 :(得分:0)

默认情况下,collection.update()仅更新单个文档,如果需要更新多个文档,则必须在回调函数之前添加{multi:1}参数。