我使用MongoDB聚合框架查询文档,结果如下:
{
"result" : [
{
"_id" : "luke",
"times" : 8
},
{
"_id" : "albert",
"times" : 4
},
{
"_id" : "matt",
"times" : 4
}
],
"ok" : 1
}从上面的结果可以看出,查询在mongoDB shell中工作,但是在使用Jongo获得结果时遇到了问题:
Aggregationoutput =
gamesCollection.aggregate(
"{ ... }"
).as(Aggregation.class);
output.results().iterator().hasNext();主要的问题似乎是Jongo不允许我使用AggregationOutput?他想代替Aggregation ..。但是找不到任何关于如何使用它的例子
编辑:我有点沮丧,因为我不能让Jongo使用聚合。我必须按照DBObjects驱动程序中指定的那样用MongoDB编写查询,但是代码看起来真的很难看。
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;
}}
发布于 2013-03-24 15:15:06
您可以使用聚合特性,如find/findOne..。结果自动解组为Pojo:
List<Email> emails = collection.aggregate("{$project:{sender:1}}")
.and("{$match:{tags:'read'}}")
.and("{$limit:10}")
.as(Email.class);您可以在这里找到更多的示例:https://github.com/bguerout/jongo/blob/master/src/test/java/org/jongo/AggregateTest.java
发布于 2014-08-21 16:34:10
我刚才看到了这个问题,但我希望它能帮助别人。您可以创建这样的内部类:
private static class AggregateResult {
String _id;
int time;
}并按如下方式调用聚合函数:
List<AggregateResult> res = gamesCollection.aggregate(
"{ ... }"
).as(AggregateResult.class);然后可以迭代res列表中的结果。
https://stackoverflow.com/questions/15588641
复制相似问题