使用$ in vs $或者来优化MongoDB中的查询方式

Ama*_*war 7 mongodb

从大约10个电子邮件ID列表中实现一个查找表以查找邮件ID存在的应用程序.尝试使用$或$ in.

$ in似乎提供了更好的性能,但并不重要.一个比其他更优化吗?

Asy*_*sky 24

MongoDB文档有答案:

"当使用$或使用<expressions>对相同字段的值进行相等性检查时,请在$或运算符上选择$ in运算符."


小智 8

$or运算符是逻辑运算符,您可以在其中定义自己的登录名,但$in运算符是比较运算符,您可以在其中进行比较,但不能放置逻辑。

的语法$in

{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }
Run Code Online (Sandbox Code Playgroud)

例子:

db.account.find( { qty: { $in: [ 5, 15 ] } } )
Run Code Online (Sandbox Code Playgroud)

的语法$or

{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
Run Code Online (Sandbox Code Playgroud)

例子:

db.account.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } )
Run Code Online (Sandbox Code Playgroud)

注意:帐户是您的收藏名称


小智 5

“虽然“$or”始终有效,但请尽可能使用“$in”,因为查询优化器可以更有效地处理它。”

而且“$in”具有更好的可读性。

参考:MongoDB:权威指南