如何在mongodb中更新嵌套对象的字段?

时间:2014-04-17 07:31:38

标签: node.js mongodb

Salam(意为你好):)

我使用node-mongodb-native驱动程序,我需要更新存储在数组中的对象的特定字段。这是我的mongodb集合中的示例文档:

{
    "fields" : [ 
        {
            "en" : "birthDate",
            "status" : "enable",
            "index" : 10
        },{
            "en" : "email",
            "status" : "enable",
            "index" : 4
        },{
            "en" : "inviterCode",
            "status" : "enable",
            "index" : 2
        }
    ]
}

这是我的新数据:

var newData = [ 
    {
        "en" : "birthDate",
        "status" : "disable",
    },{
        "en" : "email",
        "status" : "disable",
    }
];

如您所见,如果en字段匹配,则应更新status字段。我知道以下查询适用于单个更新,但如何通过单个查询实现多个更新?

collection.update(
    {'fields.en': 'birthDate'}, 
    {$set:{'fields.$.status': 'disable'}}, 
    {w:1, multi: true}, 
    function(error, count){

    }
);

1 个答案:

答案 0 :(得分:0)

遗憾的是,使用单个更新无法实现。 MongoDB上有open ticket个结束。

现在你需要以编程方式执行此操作(例如,循环遍历数组以查找相关索引)。