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"
                            }
                        }
                    }
                }]
            }]
          }

アクセス URL の例:

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

この URL にアクセスすると、機能せず、エラーが表示されます。

エラー:

{"http ステータス コード":400,"http ステータスの説明":"Bad Request","メッセージ":"集計パイプラインの実行エラー: 変数 isConfirmedTravel がバインドされていません"}

以下のURLにアクセスすると動作します。

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