你想在 MongoDB 聚合管道里比较两列的大小,可以用 $subtract
做差值,然后根据结果判断哪个更大。
用法示例
假设你的文档结构是:
{
"fieldA": 10,
"fieldB": 7
}
你想比较 fieldA
和 fieldB
,可以这样写聚合:
db.collection.aggregate([
{
$project: {
fieldA: 1,
fieldB: 1,
diff: { $subtract: ["$fieldA", "$fieldB"] },
isFieldAGreater: { $gt: [ { $subtract: ["$fieldA", "$fieldB"] }, 0 ] }
}
}
])
解释
$subtract: ["$fieldA", "$fieldB"]
会计算fieldA - fieldB
。- 如果差值大于 0,则说明
fieldA
大于fieldB
,用$gt
来判断。
示例结果
{
"fieldA": 10,
"fieldB": 7,
"diff": 3,
"isFieldAGreater": true
}
如果想筛选出 fieldA > fieldB
的文档,可以用 $match
:
db.collection.aggregate([
{
$match: {
$expr: { $gt: ["$fieldA", "$fieldB"] }
}
}
])
这里 $expr
允许你在 $match
中使用聚合表达式。
发表回复