我想把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()
抽象出你的问题为:查询得出数组长度在0和n之间的doc
where({ 'array.0':_.exists(true), ['array.'+n]:_.exists(false) })
不行的话,可能需要用上 _.and