如何在MongoDB聚合中解决“执行聚合管道错误:变量'XYZ'未绑定”?

时间:2017-07-19 13:40:53

标签: json mongodb aggregation-framework restheart

我正在使用Restheart和MongoDB以及其中的新功能,我必须在MongoDb中编写聚合。我在mongoDb中使用$ match编写聚合。

此示例代码:

  {
    "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状态说明”:“不好   请求“,”消息“:”执行aggreation管道的错误:变量   isConfirmedTravel没有绑定“}

当我访问下面的网址时,它会起作用。

http://..xyz../_aggrs/aggregation_by_time?avars={"stand":["A","B","C","D","E","F"],"isConfirmedTravel":"true"}

所以我想制作可选的$ match,就好像我在url中没有提到parmater“isConfirmedTravel”那样它应该可行。如果我想在url中发送参数“isConfirmedTravel”那么它也应该工作。但在我的情况下如果把字段放在$ match中那么你应该在url中提及。这就是为什么我要设置可选的“isConfirmedTravel”:“true”字段。如果我打电话,它应该工作,如果我不打电话,那么url应该工作。

0 个答案:

没有答案