这个
$match
$expr
可以根据条件进行筛选:
(sender.client = spec1 or receiver.client = spec1)
我的目标是过滤条件,如果(sender.client=spec1或
receiver.client=spec1)然后显示所有字段,即
您可以添加进一步的筛选器以匹配
name
字段(有两个“name”字段,
sender.name
和
receiver.name
var queryFilter = { $cond: {
if: { $or: [
{ $eq: [ "$sender.client", "spec1" ] },
{ $eq: [ "$receiver.client", "spec1" ] }
]
},
then: true,
else: false
}
};
db.test.aggregate( [
{
$match: {
$expr: { $eq: [ queryFilter, true ],
$or: [ { "sender.name" : "name3" }, { "receiver.name" : "name3" } ] }
}
}
] )
匹配筛选器为:
$expr: {...}
和
$or: [...]
.
$project
)之后
$匹配