MongoDB 聚合框架匹配或

Posted

技术标签:

【中文标题】MongoDB 聚合框架匹配或【英文标题】:MongoDB aggregation framework match OR 【发布时间】:2013-05-29 23:15:51 【问题描述】:

可以在 $match 中做 OR 吗?

我的意思是这样的:

db.articles.aggregate(
     $or: [ $match :  author : "dave" , $match :  author : "john" ] 
);

【问题讨论】:

【参考方案1】:
$match:  $or: [ author: 'dave' ,  author: 'john' ] 

就像这样,因为 $match 运算符只接受您通常放入 find() 函数的内容

【讨论】:

【参考方案2】:

在这种特殊情况下,如果您是$or-ing 相同的字段$in 运算符将是更好的选择,还因为它提高了可读性:

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

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

$or 与 $in

当使用 $or 和 是相等的 检查同一字段的值,请改用 $in 运算符 $or 运算符。

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

【讨论】:

根据 Mongo 文档,这种“最有效”的方法可以进行相等比较,例如您的示例。见docs.mongodb.org/manual/reference/operator/query/or/#_S_or%22 $in 是要走的路 我相信 $or 不是聚合运算符。 @PaulShapiro:我希望你没有因此而投反对票。对于所有人,请考虑在否决投票之前评论原因,这对每个人都有帮助。这是参考Boolean Aggregation Operators -> $or 你的答案不正确,正如你所看到的,我已经评论解释了答案在哪里以及如何不正确。

以上是关于MongoDB 聚合框架匹配或的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB - 聚合查询

Mongodb聚合数组大小大于匹配[重复]

Mongodb聚合数组大小大于匹配[重复]

MongoDB 聚合与特定字段不匹配

Mongodb匹配聚合不适用于日期

性能聚合 MongoDB 匹配和示例