收藏
回答

聚合aggregate中match中使用_.eq等command命令出错,为什么查不出数据呢?

基础库:2.24.1

wx.cloud.init();
const app = getApp();
const db = wx.cloud.database();
const _ = db.command;
const $ = db.command.aggregate;
// 数据
data:{
  roleWhere:{
      '_id':('XXX'), //能查询出来
      '_id':_.eq('XXX'), // 不能查询出来
      '_id':_.eq('XXX'),// 不能查询出来
      // ['company._id']:_.exists(false).or(_.eq(app.globalData.user.company._id))
    },
    aggregate:[]
 }
// 查询条件
  let query = db.collection('ROLE').aggregate();
    this.data.aggregate.forEach(cur=>{
      if(cur.lookup) query.lookup(cur.lookup);
      if(cur.field) query.addFields(cur.field);
      if(cur.project) query.project(cur.project);
    });
    query.match(this.data.roleWhere).end()
      .then(res=>{
        console.info('Main.Js测试aggregate OK',res.list.length)
      }).catch(err=>{
        console.error('Main.Js测试aggregate ERR',err)
      });
回答关注问题邀请回答
收藏

1 个回答

  • 跨商通
    跨商通
    2022-05-12

    lookup只能在云函数里使用。

    2022-05-12
    有用
    回复 1
    • 发表于移动端
      2022-05-12
      客户端是可以的用lookup的。 我试了一下,直接传递match对象不行。但是通过function传递match是可以的。可能是command运行机制的原因。
      2022-05-12
      回复
登录 后发表内容