私は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が機能するはずです。