收藏
回答

云开发聚合查询match(_.expr())?

我想把status != 4,且 0  ≤  memberList.length + 1  ≤  "$groupType.groupNum"的数据筛选出来,

我的方法并没有把(memberList.length 大于等于 0) 且 (memberList.length + 1 小于等于 "$groupType.groupNum")的值筛选出来。

求解决方法

.match(
        _.expr(
          $.or([
            $.neq(["$status", 4]), //去除团长取消订单时(status=4),没有人参与团购。
            $.and([
              $.gte([$.size("$memberList"), 0]),
              $.lte([$.size("$memberList") + 1, "$groupType.groupNum"]),
            ]),
          ])
        )
      )
      .end()


回答关注问题邀请回答
收藏

1 个回答

  • 老张
    老张
    2020-08-25

    抽象出你的问题为:查询得出数组长度在0和n之间的doc

    where({
      'array.0':_.exists(true),
      ['array.'+n]:_.exists(false)
    })
    
    

    不行的话,可能需要用上 _.and

    2020-08-25
    有用
    回复 5
    • Qiu (吉²)
      Qiu (吉²)
      2020-08-25
      您好,请问‘array.0’这种方法怎么理解啊,新手望见谅
      2020-08-25
      回复
    • 老张
      老张
      2020-08-25回复Qiu (吉²)
      运行一遍不就明白了?
      2020-08-25
      1
      回复
    • Qiu (吉²)
      Qiu (吉²)
      2020-08-25
      谢谢啦🙏
      2020-08-25
      回复
    • Qiu (吉²)
      Qiu (吉²)
      2020-08-26
      请问,我这么写为什么会报错啊。
      2020-08-26
      回复
    • 老张
      老张
      2020-08-26回复Qiu (吉²)
      先将n设为常量,比如10,调试通过后,再换变量。
      2020-08-26
      回复
登录 后发表内容
问题标签