Mongo $in operator performance
Solution 1:
It can be fairly efficient with small lists (hard to say what small is, but at least into the tens/hundreds) for $in
. It does not work like app-engine since mongodb has actual btree indexes and isn't a column store like bigtable.
With $in
it will skip around in the index to find the matching documents, or walk through the whole collection if there isn't an index to use.
Solution 2:
Assuming you have created index on the author
field, from algorithmic point of view, the time complexity of $in
operation is: $(N*log(M))
, where N
is the length of input array and M
is the size of the collection.
The time complexity of $in
operation will not change unless you change a database (Though I don't think any db can break O(N*log(M))
).
However, from engineering point of view, if N
goes to a big number, it is better to let your business logic server to simulate the $in
operation, either by batch or one-by-one.
This is simply because: memory in database servers is way more valuable than the memory in business logic servers.