# [Command](/minigame/dev/wxcloud/reference-sdk-api/database/Command).expr(aggregateExpression: [Expression](/minigame/dev/wxcloud/reference-sdk-api/database/aggregate/Expression)): [Command](/minigame/dev/wxcloud/reference-sdk-api/database/Command)

> 支持端：[云函数 1.4.0](/minigame/dev/wxcloud/reference/changelog-server-sdk)

查询操作符，用于在查询语句中使用聚合表达式，方法接收一个参数，该参数必须为聚合表达式

## 参数

### aggregateExpression: [Expression](/minigame/dev/wxcloud/reference-sdk-api/database/aggregate/Expression)

要添加进数组的一个或多个元素

## 返回值

### [Command](/minigame/dev/wxcloud/reference-sdk-api/database/Command)

## 使用说明

1. `expr` 可用于在聚合 [`match`](/minigame/dev/wxcloud/reference-sdk-api/database/aggregate/Aggregate.match) 流水线阶段中引入聚合表达式
2. 如果聚合 [`match`](/minigame/dev/wxcloud/reference-sdk-api/database/aggregate/Aggregate.match) 阶段是在 [`lookup`](/minigame/dev/wxcloud/reference-sdk-api/database/aggregate/Aggregate.lookup) 阶段内，此时的 `expr` 表达式内可使用 `lookup` 中使用 `let` 参数定义的变量，具体示例可见 [`lookup`](/minigame/dev/wxcloud/reference-sdk-api/database/aggregate/Aggregate.lookup) 的 `指定多个连接条件` 例子
3. `expr` 可用在普通查询语句（`where`）中引入聚合表达式

## 示例代码 1：比较同一个记录中的两个字段

假设 `items` 集合的数据结构如下：

```
{
  "_id": string,
  "inStock": number, // 库存量
  "ordered": number  // 被订量
}
```

找出被订量大于库存量的记录：

```js
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 的记录：

```js
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()
```
