是否可以在$ match中执行OR?
我的意思是这样的:
db.articles.aggregate(
{ $or: [ $match : { author : "dave" }, $match : { author : "john" }] }
);
答案 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