我需要在云函数中查询数据库,聚合计算一个人的某月1-31号的消费金额:
let queryFeeSum = await db .collection('lunch') .aggregate() .match({ eno: eno, date: $.and([$.gte(['$date', dateNumRange.begin]), $.lte(['$date', dateNumRange.end])]) }) .group({ _id: null, fee: $.sum('$goodsPrice') }) .end() |
date是数值型:它的值是8位整数,如20190701、20190728
上面的 $.and 语句按文档中的写法,聚合这个功能也是官方开发出来不久,找不到相关帮助文档。
运行报错,查看日志提示:
{"errorCode":1,"errorMessage":"user code exception caught","stackTrace":"errCode: -502001 database request fail | errMsg: [FailedOperation] (BadValue) unknown operator: $and; "}
请问一下,为什么提示操作失败,无效的值、未知的操作器$and。

match中应该传入一个query,示例代码中的这个不是一个合法的query
{eno: eno,date: $.and([$.gte(['$date', dateNumRange.begin]), $.lte(['$date', dateNumRange.end])])}改成这样试试?
.match($.and([{ eno: eno },{ date: { $gte: dateNumRange.begin, $lte: dateNumRange.end } }]))这句代码怎么看着像天书,实际运行也提示语法错误,$后面的.都搞没了?
date: { $gte: dateNumRange.begin, $lte: dateNumRange.end }看提示的样子,是不是BUG呢?