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

时间:2013-02-06 18:57:59

标签: mongodb

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

$ in似乎提供了更好的性能,但并不重要。是否比其他更优化?

4 个答案:

答案 0 :(得分:20)

MongoDB文档有the answer

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

答案 1 :(得分:2)

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

此外,“$ in”具有更高的可读性。

参考:MongoDB:权威指南

答案 2 :(得分:2)

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

$in的语法:

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

示例:

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

$or的语法:

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

示例:

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

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

答案 3 :(得分:0)

如果您使用$ in可以确保没有犹豫,但是我更喜欢将其格式化为$ or,因为它可以确保索引(可读性在我更喜欢的应用程序逻辑中不会引起我的关注)消耗应用程序而不是mongodb服务器的内存)