AggregateCommand.cond(value: any): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。计算布尔表达式,返回指定的两个值其中之一。

参数

value: any

返回值

Object

API 说明

cond 的使用形式如下:

  1. cond({ if: <布尔表达式>, then: <真值>, else: <假值> })

或者:

  1. cond([ <布尔表达式>, <真值>, <假值> ])

两种形式中,三个参数(ifthenelse)都是必须的。

如果布尔表达式为真,那么 $cond 将会返回 <真值>,否则会返回 <假值>

示例代码

假设集合 items 的记录如下:

  1. { "_id": "0", "name": "item-a", "amount": 100 }
  2. { "_id": "1", "name": "item-b", "amount": 200 }
  3. { "_id": "2", "name": "item-c", "amount": 300 }

我们可以使用 cond,根据 amount 字段,来生成新的字段 discount

  1. const $ = db.command.aggregate
  2. db.collection('items').aggregate()
  3. .project({
  4. name: 1,
  5. discount: $.cond({
  6. if: $.gte(['$amount', 200]),
  7. then: 0.7,
  8. else: 0.9
  9. })
  10. })
  11. .end()

输出如下:

  1. { "_id": "0", "name": "item-a", "discount": 0.9 }
  2. { "_id": "1", "name": "item-b", "discount": 0.7 }
  3. { "_id": "2", "name": "item-c", "discount": 0.7 }