0

我正在使用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 应该可以工作。

4

0 回答 0