# [AggregateCommand](AggregateCommand).switch(value: any): Object

> 支持端：[小程序 2.7.4](/miniprogram/dev/framework/client-lib/version.md), [云函数 0.8.1](/miniprogram/dev/wxcloudservice/wxcloud/reference/changelog-server-sdk), [Web](/miniprogram/dev/wxcloudservice/wxcloud/reference/changelog-web-sdk)

聚合操作符。根据给定的 `switch-case-default` 计算返回值、

## 参数

### value: any

## 返回值

### Object

## API 说明

`switch` 的使用形式如下：

```javascript
switch({
    branches: [
        case: , then: ,
        case: , then: ,
        ...
    ],
    default: 
})
```

## 示例代码

假设集合 `items` 的记录如下：

```json
{ "_id": "0", "name": "item-a", "amount": 100 }
{ "_id": "1", "name": "item-b", "amount": 200 }
{ "_id": "2", "name": "item-c", "amount": 300 }
```

我们可以使用 `switch`，根据 `amount` 字段，来生成新的字段 `discount`：

```javascript
const $ = db.command.aggregate
db.collection('items').aggregate()
  .project({
    name: 1,
    discount: $.switch({
        branches: [
            { case: $.gt(['$amount', 250]), then: 0.8 },
            { case: $.gt(['$amount', 150]), then: 0.9 }
        ],
        default: 1
    })
  })
  .end()
```

输出如下：

```json
{ "_id": "0", "name": "item-a", "discount": 1 }
{ "_id": "1", "name": "item-b", "discount": 0.9 }
{ "_id": "2", "name": "item-c", "discount": 0.8 }
```
