Monday, 15 May 2017

Mongoose multi:true not working to update all documents in an array

Following is how my Mongodb is stored. I want to update each document in my collection, where labId is 401 to 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")
    ]
}

And So i use multi:true to update all documents through mongoose command line. Here is my mongoose query till now & its not working fine.

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



via Inder R Singh

No comments:

Post a Comment