Command.and(expressions: any[]): Command

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

查询操作符,用于表示逻辑 “与” 的关系,表示需同时满足多个查询筛选条件

参数

expressions: any[]

返回值

Command

使用说明

and 有两种使用情况:

1. 用在根查询条件

此时需传入多个查询条件,表示需同时满足提供的多个完整查询条件

  1. const _ = db.command
  2. db.collection('todo').where(_.and([
  3. {
  4. progress: _.gt(50)
  5. },
  6. {
  7. tags: 'cloud'
  8. }
  9. ])).get()

但以上用 and 组成的查询条件是不必要的,因为传入的对象的各字段隐式组成了 “与” 的关系,上述条件等价于下方更简洁的写法:

  1. const _ = db.command
  2. db.collection('todo').where({
  3. progress: _.gt(50),
  4. tags: 'cloud'
  5. }).get()

通常需要显示使用 and 是用在有跨字段或操作的时候,如以下表示 “progress 字段大于 50 或 tags 字段等于 cloud 或 tags 数组字段(如果 tags 是数组)中含有 cloud”:

  1. const _ = db.command
  2. db.collection('todo').where(_.and([
  3. _.or({
  4. progress: _.gt(50)
  5. }),
  6. _.or({
  7. tags: 'cloud'
  8. })
  9. ])).get()

2. 用在字段查询条件

需传入多个查询操作符或常量,表示字段需满足或匹配给定的条件。

如以下用前置写法的方式表示 “progress 字段值大于 50 且小于 100”

  1. const _ = db.command
  2. db.collection('todo').where({
  3. progress: _.and(_.gt(50), _.lt(100))
  4. })

还可以用后置写法的方式表示同样的条件:

  1. const _ = db.command
  2. db.collection('todo').where({
  3. progress: _.gt(50).and(_.lt(100))
  4. })

注意 Command 默认也可以直接链式调用其他 Command,默认表示多个 Command 的与操作,因此上述代码还可以精简为:

  1. const _ = db.command
  2. db.collection('todo').where({
  3. progress: _.gt(50).lt(100)
  4. })

调用风格

方法接收两种传参方式,一是传入一个数组参数,二是传入多个参数,效果一样。

  1. // 传入数组
  2. function and(expressions: Expression[]): Command
  3. // 传入多参数
  4. function and(...expressions: Expression[]): Command