aggregate().match({publish:true},$.or)中为什么or不起起作用?
发布于 6 年前 作者 ping76 12457 次浏览 来自 官方Issues

云函数中:

请哪位大神帮忙看一下:第一行筛选条件与第二条筛选条件,只能是第一行起作用,为什么不能同时起作用?

// 云函数入口文件

const cloud = require('wx-server-sdk')

cloud.init()

var $ = cloud.database().command.aggregate   //定义聚合操作符

// 使用操作符 

let db = cloud.database()


// 云函数入口函数

exports.main = async (event, context) => {

  const key = event.key

  const city = "shanghai"

  return cloud.database().collection("hotvideo").aggregate()

  .match(

    {'city':city,'publish':true},//这一行的筛选条件

    $.or([//这是第二行筛选条件

      {

        Keywords: $.in([

          db.RegExp({

            regexp: '.*' + key,

            options: 'i',

          })

        ])

      },

      {

        title: db.RegExp({

          regexp: '.*' + key,

          options: 'i',

        })

      }

    ])      

  )

  .lookup({

    from:"yuanshi_users",

    localField: '_openid',

    foreignField: '_openid',

    as: 'publish'

  })

  .project({

    //project把指定的字段传递给下一个流水线,指定的字段可以是某个已经存在的字段,也可以是计算出来的新字段

    publish: 0

  })

  .end({

    success:function(res){

      return res;

    },

    fail(error) {

      return error;

    }

  })

}

1 回复
      col.where(_.and([{
        _openid: this.openid,
      },
      _.or([{
        number: db.RegExp({
          regexp: this.data.inputVal,
          options: 'i',
        })
      },
      {
        title: db.RegExp({
          regexp: this.data.inputVal,
          options: 'i',
        })
      },
      ])
      ]))

这是我运行正常的代码,仅供参考。

回到顶部