MongoDB聚合框架匹配OR


Answers:


168
$match: { $or: [{ author: 'dave' }, { author: 'john' }] }

像这样,因为$match运算符只取您通常在find()函数中输入的内容


85

在这种特殊情况下,你在哪里$or-ing 同一领域中,$in运营商将是一个更好的选择,也因为它增加了可读性:

$match: { 
  'author': { 
    $in: ['dave','john'] 
  } 
}

根据MongoDB文档,$in在这种情况下建议使用:

$ or或$ in

当将$ or与<expressions>一起使用时,该检查是否等于同一字段的值,请使用$ in运算符而不是$ or运算符。

https://docs.mongodb.com/manual/reference/operator/query/or//#or-versus-in


1
根据Mongo的文档,这种“最有效”的方式用于进行相等比较(例如您的示例)。参见docs.mongodb.org/manual/reference/operator/query/or//#_S_or%22
Mark Gibaud

3
$ in是必经之路
蓝色皮肤2015年

1
我相信$ or不是聚合运算符。
Paul Shapiro

@PaulShapiro:希望您不要因此而被否决。对于所有人,请在拒绝投票之前考虑一下原因,以帮助所有人。这是参考布尔聚合运算符-> $ or
Amol M Kulkarni

您的答案不正确,正如您所看到的,我已经评论了答案在何处以及如何不正确。
Paul Shapiro
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.