从大约10个电子邮件ID的列表中实现一个查找表以查找邮件ID存在的应用程序。尝试使用$或和in。
$ in似乎提供了更好的性能,但并不重要。是否比其他更优化?
答案 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服务器的内存)