Optimized way of Querying in MongoDB using $in vs

2019-01-19 17:09发布

问题:

Implementing an application that looks up a table for mail id presence from a list of around 10 email ids. Tried using $or and $in.

$in seems to give better performance but not significant. Is one more optimized than other?

回答1:

MongoDB docs have the answer:

"When using $or with <expressions> that are equality checks for the value of the same field, choose the $in operator over the $or operator."



回答2:

"While "$or"will always work, use "$in"whenever possible as the query optimizer handles it more efficiently."

Moreover "$in" has more readability.

Ref: MongoDB: The Definitive Guide



回答3:

$or operator is logical operator where you can define your own login but $in operator is Comparison operator where you can compare you can not put your on logic.

Syntax of $in:

{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }

Example:

db.account.find( { qty: { $in: [ 5, 15 ] } } )

Syntax of $or:

{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }

Example:

db.account.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } )

Note: Account is your collection name



标签: mongodb