📜  MongoDB $cmp 运算符(1)

📅  最后修改于: 2023-12-03 15:17:41.413000             🧑  作者: Mango

MongoDB $cmp 运算符

在 MongoDB 数据库中,$cmp 运算符用于比较两个表达式并返回比较结果。它返回一个整数,表示两个表达式的相对顺序。

语法

$cmp 运算符的语法如下:

{ $cmp: [ <expression1>, <expression2> ] }
  • <expression1>: 要进行比较的第一个表达式。
  • <expression2>: 要进行比较的第二个表达式。
示例

假设我们有一个名为 users 的集合,其中包含了以下文档:

[
  { "name": "Alice", "age": 25 },
  { "name": "Bob", "age": 30 },
  { "name": "Charlie", "age": 35 }
]

为了演示 $cmp 运算符的使用,我们可以执行下面的 MongoDB 查询:

db.users.aggregate([
  {
    $project: {
      name: 1,
      ageDiff: { $cmp: [ "$age", 30 ] }
    }
  }
])

在上述例子中,我们使用了 $cmp 运算符来计算每个用户的年龄与 30 的比较结果,比较结果保存在 ageDiff 字段中。查询的结果将类似于以下文档:

[
  { "name": "Alice", "ageDiff": -1 },
  { "name": "Bob", "ageDiff": 0 },
  { "name": "Charlie", "ageDiff": 1 }
]

从上述结果中可以看出:

  • Alice 的年龄比 30 小,所以比较结果为 -1。
  • Bob 的年龄与 30 相等,所以比较结果为 0。
  • Charlie 的年龄比 30 大,所以比较结果为 1。
注意事项
  • $cmp 运算符仅适用于数字类型的比较。如果要比较其他数据类型,可以使用 $eq 等其他比较运算符。
  • 当比较两个表达式时,如果表达式的值为 null 或缺失,则 $cmp 运算符将返回 null
  • 如果要进行基于比较结果的进一步操作,可以在查询中使用条件操作符(如 $cond)或聚合管道的后续阶段。

更多关于 $cmp 运算符的详细信息,请参考 MongoDB 官方文档:Comparison/$cmp