Mongodb – Update multiple documents by id set. Mongoose

mongodbmongoose

I wonder if mongoose has some method to update multiple documents by id set. For example:

for (var i = 0, l = ids.length; i < l; i++) {
    Element.update({'_id': ids[i]}, {'visibility': visibility} ,function(err, records){
        if (err) {
            return false;
        } else {
            return true;
        };
    });
};

What i want to know, that if mongoose can do something like this:

Element.update({'_id': ids}, {'visibility': visibility}, {multi: true} ,function(err, records){
    if (err) {
        return false;
    }
});

where ids is an array of ids, like ['id1', 'id2', 'id3'] – sample array.
Same question for find.

Best Answer

Most probably yes. And it is called using $in operator in mongodb query for update.

db.Element.update(
   { _id: { $in: ['id1', 'id2', 'id3'] } },
   { $set: { visibility : yourvisibility } },
   {multi: true}
)

All you need is to find how to implement $in in mongoose.

Related Topic