db.command.or

查询指令,用于表示逻辑 "或" 的关系,表示需同时满足多个查询筛选条件。或指令有两种用法,一是可以进行字段值的 “或” 操作,二是也可以进行跨字段的 “或” 操作。

字段值的 “或” 操作指的是指定一个字段值为多个值之一即可:

字段值的或操作:示例代码

如筛选出进度大于 80 或小于 20 的 todo:

流式写法:

  1. const cloud = require('wx-server-sdk')
  2. cloud.init()
  3. const db = cloud.database()
  4. const _ = db.command
  5. exports.main = async (event, context) => {
  6. try {
  7. return await db.collection('todo').where({
  8. progress: _.gt(80).or(_.lt(20))
  9. }).get()
  10. } catch(e) {
  11. console.error(e)
  12. }
  13. }

前置写法:

  1. const cloud = require('wx-server-sdk')
  2. cloud.init()
  3. const db = cloud.database()
  4. const _ = db.command
  5. exports.main = async (event, context) => {
  6. try {
  7. return await db.collection('todo').where({
  8. memory: _.or(_.gt(80), _.lt(20))
  9. }).get()
  10. } catch(e) {
  11. console.error(e)
  12. }
  13. }

跨字段的 “或” 操作指条件 “或”,相当于可以传入多个 where 语句,满足其中一个即可,示例:

跨字段的或操作:示例代码

如筛选出进度大于 80 或已标为已完成的 todo:

  1. const cloud = require('wx-server-sdk')
  2. cloud.init()
  3. const db = cloud.database()
  4. const _ = db.command
  5. exports.main = async (event, context) => {
  6. try {
  7. return await db.collection('todo').where(_.or([
  8. {
  9. progress: _.gt(80)
  10. },
  11. {
  12. done: true
  13. }
  14. ]))
  15. } catch(e) {
  16. console.error(e)
  17. }
  18. }

原文: https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-server-api/database/command.or.html