MongoDB 集約フレームワークを使用してドキュメントを照会しています。結果は次のとおりです。
{
"result" : [
{
"_id" : "luke",
"times" : 8
},
{
"_id" : "albert",
"times" : 4
},
{
"_id" : "matt",
"times" : 4
}
],
"ok" : 1
}
上記の結果からわかるように、クエリは mongoDB シェルで機能しますが、Jongo で結果を取得するときに問題があります。
Aggregationoutput =
gamesCollection.aggregate(
"{ ... }"
).as(Aggregation.class);
output.results().iterator().hasNext();
AggregationOutput
主な問題は、Jongo が?の使用を許可していないことのようです。彼は代わりに望んでAggregation
います...しかし、それを使用する方法に関する利用可能な例が見つかりません
編集:
Jongo を集計で動作させることができないことに少し不満を感じています。MongoDB Java ドライバーで指定されているようにクエリを作成する必要がDBObjects
ありましたが、コードは非常に見苦しく見えます..
EDIT2: 情報を完成させるために、これはJongoで使用していた元の集計であり、ResultObjectにアンマーシャリングできませんでした
List<ResultObject> output =
gamesCollection.aggregate(
"{ $match: { 'playersList.playerid': 'bob' }},"
+"{ $unwind: '$playersList' },"
+"{ $match: { 'playersList.playerid': { $ne: 'bob' } } },"
+"{ $group: { _id: '$playersList.playerid', times: { $sum : 1} } },"
+"{ $sort: { times: -1 } }"
).as(ResultObject.class);
class ResultObject{
String _id;
int times;
}
}