我需要在云函数中查询数据库,聚合计算一个人的某月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呢?