group by
を使用してクエリを実装する方法を学びたいMongo DB Java 3.x Driver
です。コレクションを でグループ化し、結果usernames
を で並べ替えます。count
DESC
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);
必要な結果は、 でグループ化されたドキュメントの数ですusername
。コレクションに含まれるドキュメントの総数countOfResults
を返します。