Mongoose multi:true无法更新数组中的所有文档

时间:2017-05-15 16:30:11

标签: node.js mongodb mongoose

以下是我的Mongodb的存储方式。我想更新我的集合中的每个文档,其中labId为401为true。

{
    "_id" : ObjectId("5914a2ad6b2ee7b7c74ee150"),
    "domainName" : "acts-corp.com.tw",
    "userlevels" : [ 
        {
            "labId" : 104,
            "userlevel" : true
        }, 
        {
            "labId" : 401,
            "userlevel" : false
        }, 
        {
            "labId" : 202,
            "userlevel" : true
        }, 
        {
            "labId" : 102,
            "userlevel" : true
        }
    ],
    "labconfigs" : [ 
        ObjectId("5914a2ad6b2ee7b7c74ee14c"), 
        ObjectId("5914a2ad6b2ee7b7c74ee14d"), 
        ObjectId("5914a2ad6b2ee7b7c74ee14f"), 
        ObjectId("5914a2ad6b2ee7b7c74ee14e")
    ]
}

/* 2 */
{
    "_id" : ObjectId("5914a2ad6b2ee7b7c74ee151"),
    "domainName" : "adexus.cl",
    "userlevels" : [ 
        {
            "labId" : 104,
            "userlevel" : true
        }, 
        {
            "labId" : 401,
            "userlevel" : false
        }, 
        {
            "labId" : 202,
            "userlevel" : true
        }, 
        {
            "labId" : 102,
            "userlevel" : true
        }
    ],
    "labconfigs" : [ 
        ObjectId("5914a2ad6b2ee7b7c74ee14c"), 
        ObjectId("5914a2ad6b2ee7b7c74ee14d"), 
        ObjectId("5914a2ad6b2ee7b7c74ee14f"), 
        ObjectId("5914a2ad6b2ee7b7c74ee14e")
    ]
}

所以我使用multi:true来通过mongoose命令行更新所有文档。这是我到目前为止的mongoose查询&它不能正常工作。

Domain.model.update( {'userlevels.labID': 401 },  {'$set': {'userlevels.$.userlevel': true}},{multi:true}, function(err, result) {
  if (err) return res.apiError('database error', err);
  resolve(result);
});

0 个答案:

没有答案