我正在使用Restheart和 MongoDB,而且这些都是新的,我必须在 MongoDb 中编写聚合。我用 $match 在 mongoDb 中编写了聚合。
这里示例代码:
{
"aggrs": [{
"type": "pipeline",
"uri": "aggregation_by_time",
"stages": [{
"_$match": {
"bus::destination": {
"_$in": {
"_$var": "stand"
}
},
"bus::eta": {
"_$gte": {
"_$var": "fromDate"
},
"_$lte": {
"_$var": "toDate"
}
},
"tickets": {
"_$eq": {
"_$var": "isConfirmedTravel"
}
}
}
}]
}]
}
这里示例访问网址:
http://..xyz../_aggrs/aggregation_by_time?avars={"stand":["A","B","C","D","E","F"]}
当我访问此网址时,它无法正常工作,并显示一些错误。
错误:
{"http 状态码":400,"http 状态描述":"Bad Request","message":"错误执行聚合管道:变量 isConfirmedTravel 未绑定"}
当我访问以下网址时,它将起作用。
http://..xyz../_aggrs/aggregation_by_time?avars={"stand":["A","B","C","D","E","F"],"isConfirmedTravel":"true"}
所以我想做可选的$match,就像我没有在url中提到作为参数“isConfirmedTravel”,那么它应该可以工作。如果我想在 url 中作为参数“isConfirmedTravel”发送,那么它也应该可以工作。但就我而言,如果将字段放入 $match 中,那么您应该在 url 中提及。这就是为什么我要设置可选的“isConfirmedTravel”:“true”字段。如果我打电话,那么它应该可以工作,如果我不打电话,那么 url 应该可以工作。