Mongodb : $in operator vs lot of single queries

I would definitely go with using the $in query and providing a array of _ids.

Example:

db.collection.find({
    "key": {
        "$in": [
            ObjectId("xxx"),
            ObjectId("yyy"),
            ObjectId("zzz")
        ]
    }
})

Why?

  • If you loop, there is a certain amount of setup and teardown for each query creating and exhausting cursors which would create overhead.
  • If you are not doing this on a local machine it also creates tcp/ip overhead for every request. Locally you could use domain sockets.
  • There is a index on “_id” created by default and collecting a group of documents to return in a batch request should be extremely fast so there is no need to break this up into smaller queries.

There’s some additional documentation here if you want to check it out.

Leave a Comment