查看查询:
db.pmusers.aggregate(
{
$unwind: '$preferableUsersIds'
},
{
$project: {
cmp_value: {$cmp:['$id', '$preferableUsersIds']},
id:1
}
},
{
$match: {
cmp_value: {$ne: 0}
}
}
)
这非常快。
但如果替换
$match: {
cmp_value: {$ne: 0}
}
与
$match: {
cmp_value: {$eq: 0}
}
你能解释一下这种行为吗?
根据Neil Lunn的建议,我写了以下内容:
db.pmusers.aggregate(
{
$unwind: '$preferableUsersIds'
},
{
$redact:{
$cond:[
{
$eq : [
{$cmp:['$id', '$preferableUsersIds']},
0
]
},
'$$DESCEND',
'$$PRUNE'
]
}
},
{
$project:{
id:1
}
}
)
它大约快两倍。