收藏
回答

aggregate().match({publish:true},$.or)中为什么or不起起作用?

云函数中:

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

// 云函数入口文件

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 个回答

  • 老张
    老张
    2020-08-22
          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',
            })
          },
          ])
          ]))
    
    

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

    2020-08-22
    有用 2
    回复 1
    • 薛佃涛_上海科效网络科技有限公司
      薛佃涛_上海科效网络科技有限公司
      2020-08-23
      感谢老张,受他启发修改如下:
      2020-08-23
      2
      回复
登录 后发表内容
问题标签