Remove multiple documents from mongo in a single query
I have a list of mongo '_id' which I want to delete. Currently I am doing this
# inactive_users --> list of inactive users
for item in inactive_users:
db.users.remove({'_id' : item})
but my problem is the list is too huge... (it might go 100,000 +). So querying for every item in list will only increase the load on server. Is their a way to pass the entire list in mongo query so that I dont have to fire query again and again.
Thank you
Solution 1:
db.users.deleteMany({'_id':{'$in':inactive_users}})
Solution 2:
List them all and use $in
operator:
db.users.remove({_id:{$in:[id1, id2, id3, ... ]}})
Solution 3:
You need to pass the ids in a specific format using ObjectId()
:
db.users.remove({_id: {$in: [ObjectId('Item1'), ObjectId('Item2'), ObjectId('Item2')]}});
Remove
doesn't accept integer - you have to use ObjectId
instance with _id
format as a string
.