120

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

我的意思是这样的:

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

2 回答 2

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

就像这样,因为$match操作员只接受你通常会放入find()函数的内容

于 2013-06-03T18:40:33.320 回答
100

在这种特殊情况下,当您$or使用相同的字段时,$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

于 2013-06-06T11:48:32.420 回答