你想在 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 中使用聚合表达式。