MongoDB聚合框架匹配OR

时间:2013-06-03 18:00:34

标签: mongodb aggregation-framework

是否可以在$ match中执行OR?

我的意思是这样的:

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

2 个答案:

答案 0 :(得分:139)

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

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

答案 1 :(得分:66)

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

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

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

  

$或与$ in

     

使用$或with< expressions>时那是平等的   检查相同字段的值,使用$ in运算符   $或运算符。

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