Yaroslav Basovskyy
Yaroslav Basovskyy

Reputation: 702

Update multiple documents by id set. Mongoose

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.

Upvotes: 46

Views: 69924

Answers (3)

MD SHAYON
MD SHAYON

Reputation: 8063

Updates all documents that match the specified filter for a collection.

let ids = ["kwwe232244h3j44jg3h4", "23h2u32g2h3b3hbh", "fhfu3h4h34u35"];
let visibility = true;

Element.updateMany({_id: {$in: ids}}, 
   { $set: { visibility } }, 
   {multi: true} ,
   function(err, records){
       if (err) {
           return false;
       }
});

know more

Upvotes: 1

Abhishek Singh
Abhishek Singh

Reputation: 409

in updateMany function no need of { multi: true }

db.collectionName.updateMany(
    {
        _id:
            {
                $in:
                    [
                        ObjectId("your object id"),
                        ObjectId("your object id")

                    ]
            }
    },
    {
        $inc: { quantity: 100 }

    })

I want to add one more point, you can use $in to fetch multiple document

 db.collectionName.find(
        {
            _id:
                {
                    $in:
                        [
                            ObjectId("your object id"),
                            ObjectId("your object id")

                        ]
                }
        })

Upvotes: 19

Salvador Dali
Salvador Dali

Reputation: 222811

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.

Upvotes: 92

Related Questions