Command.expr(aggregateExpression: Expression): Command
支持端:云函数 1.4.0 起
查询操作符,用于在查询语句中使用聚合表达式,方法接收一个参数,该参数必须为聚合表达式
参数
aggregateExpression: Expression
要添加进数组的一个或多个元素
返回值
Command
使用说明
expr
可用于在聚合match
流水线阶段中引入聚合表达式- 如果聚合
match
阶段是在lookup
阶段内,此时的expr
表达式内可使用lookup
中使用let
参数定义的变量,具体示例可见lookup
的指定多个连接条件
例子 expr
可用在普通查询语句(where
)中引入聚合表达式
示例代码 1:比较同一个记录中的两个字段
假设 items
集合的数据结构如下:
{
"_id": string,
"inStock": number, // 库存量
"ordered": number // 被订量
}
找出被订量大于库存量的记录:
const _ = db.command
const $ = _.aggregate
db.collection('items').where(_.expr($.gt('$ordered', '$inStock'))).get()
示例代码 2:与条件语句组合使用
假设 items
集合的数据结构如下:
{
"_id": string,
"price": number
}
假设加个小于等于 10 的打 8 折,大于 10 的打 5 折,让数据库查询返回打折后价格小于等于 8 的记录:
const _ = db.command
const $ = _.aggregate
db.collection('items').where(_.expr(
$.lt(
$.cond({
if: $.gte('$price', 10),
then: $.multiply(['$price', '0.5']),
else: $.multiply(['$price', '0.8']),
})
,
8
)
).get()