Mongodb Mongo DB Java 3.x驱动程序-按查询分组
我想学习如何使用Mongodb Mongo DB Java 3.x驱动程序-按查询分组,mongodb,mongodb-query,mongo-java,mongo-java-driver,Mongodb,Mongodb Query,Mongo Java,Mongo Java Driver,我想学习如何使用mongodbjava3.x驱动程序实现groupby查询。我想通过用户名对我的收藏进行分组,并根据结果的计数对结果进行排序DESC 下面是我想要实现的shell查询Java等价物: db.stream.aggregate({ $group: {_id: '$username', tweetCount: {$sum: 1} } }, { $sort: {tweetCount: -1} } ); 下面是我实现的Java代码: BasicDBObject groupFields =
mongodbjava3.x驱动程序实现groupby
查询。我想通过用户名对我的收藏进行分组,并根据结果的计数对结果进行排序DESC
下面是我想要实现的shell查询Java
等价物:
db.stream.aggregate({ $group: {_id: '$username', tweetCount: {$sum: 1} } }, { $sort: {tweetCount: -1} } );
下面是我实现的Java
代码:
BasicDBObject groupFields = new BasicDBObject("_id", "username");
// count the results and store into countOfResults
groupFields.put("countOfResults", new BasicDBObject("$sum", 1));
BasicDBObject group = new BasicDBObject("$group", groupFields);
// sort the results by countOfResults DESC
BasicDBObject sortFields = new BasicDBObject("countOfResults", -1);
BasicDBObject sort = new BasicDBObject("$sort", sortFields);
List < BasicDBObject > pipeline = new ArrayList < BasicDBObject > ();
pipeline.add(group);
pipeline.add(sort);
AggregateIterable < Document > output = collection.aggregate(pipeline);
basicdbobjectgroupfields=新的BasicDBObject(“\u id”,“用户名”);
//计算结果并存储到countOfResults中
groupFields.put(“countOfResults”,新的BasicDBObject($sum),1));
BasicDBObject group=新的BasicDBObject(“$group”,groupFields);
//按countOfResults DESC对结果进行排序
BasicDBObject sortFields=新的BasicDBObject(“结果计数”,-1);
BasicDBObject排序=新的BasicDBObject(“$sort”,sortFields);
Listpipeline=new ArrayList();
管道。添加(组);
管道。添加(排序);
AggregateTableoutput=collection.aggregate(管道);
我需要的结果是按username
分组的文档数countOfResults
返回集合拥有的文档的总数。您应该尽量不要在Mongo 3.x中使用旧对象(BasicDBObject
)类型。你可以试试这样的
import static com.mongodb.client.model.Accumulators.*;
import static com.mongodb.client.model.Aggregates.*;
import static java.util.Arrays.asList;
Bson group = group("$username", sum("tweetCount", 1));
Bson sort = sort(new Document("tweetCount", -1));
AggregateIterable <Document> output = collection.aggregate(asList(group, sort));
导入静态com.mongodb.client.model.累加器。*;
导入静态com.mongodb.client.model.Aggregates.*;
导入静态java.util.Arrays.asList;
Bson组=组(“$username”,总和(“tweetCount”,1));
Bson sort=sort(新文档(“tweetCount”,-1));
AggregateIterable输出=collection.aggregate(asList(group,sort));