AggregateCommand.filter(value: any): Object

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

聚合操作符。根据给定条件返回满足条件的数组的子集。

参数

value: any

返回值

Object

API 说明

语法如下:

  1. db.command.aggregate.filter({
  2. input: <array>,
  3. as: <string>,
  4. cond: <expression>
  5. })
字段说明
input一个可以解析为数组的表达式
as可选,用于表示数组各个元素的变量,默认为 this
cond一个可以解析为布尔值的表达式,用于判断各个元素是否满足条件,各个元素的名字由 as 参数决定(参数名需加 $$ 前缀,如 $$this

参数可以是任意解析为数组的表达式。

示例代码

假设集合 fruits 有如下记录:

  1. {
  2. "_id": 1,
  3. "stock": [
  4. { "name": "apple", "price": 10 },
  5. { "name": "orange", "price": 20 }
  6. ],
  7. }
  8. {
  9. "_id": 2,
  10. "stock": [
  11. { "name": "lemon", "price": 15 },
  12. ],
  13. }
  1. const _ = db.command
  2. const $ = db.command.aggregate
  3. db.collection('fruits').aggregate()
  4. .project({
  5. stock: $.filter({
  6. input: '$stock',
  7. as: 'item',
  8. cond: $.gte(['$$item.price', 15])
  9. })
  10. })
  11. .end()

返回结果如下:

  1. { "_id": 1, "stock": [ { "name": "orange", "price": 20} ] }
  2. { "_id": 2, "stock": [ { "name": "lemon", "price": 15 } ] }