我有很多级别的管道,现在我想比较两个字段,如下所示:
db.collection.aggregate({ ...},
{$match:{firstfield:{$gte:"$secondfield"}}})
如何编写此查询?
关闭,但实际调用略有不同:
db.collection.aggregate([
{ "$project": {
"firstfield": 1,
"secondfield": 1,
"difference": { "$gte": [ "$firstfield", "$secondfield" ] }
}},
{ "$match": { "difference": true } }
])
因此,与$match
调用有点不同,$project
(或可能$group
)形式允许在字段比较中返回true|false
值。
这允许您稍后在管道中使用$match
阶段进行筛选,以便根据投影的逻辑条件"包括|排除"结果。