使用java驱动程序的mongodb分组和子分组
我需要以这种方式查询mongodb,以通过使用java驱动程序的mongodb分组和子分组,java,mongodb,aggregation-framework,Java,Mongodb,Aggregation Framework,我需要以这种方式查询mongodb,以通过field1和field2获得某种数据层次结构分组。实际上,在shell中,我可以运行以下操作: db.collection.aggregate([{'$group': {'count': {'$sum': 1}, '_id': {'field1': '$field1', 'field2': '$field2'}}}]) DBCollection collection = db.getCollection("collectionName"); DBO
field1
和field2
获得某种数据层次结构分组。实际上,在shell中,我可以运行以下操作:
db.collection.aggregate([{'$group': {'count': {'$sum': 1}, '_id': {'field1': '$field1', 'field2': '$field2'}}}])
DBCollection collection = db.getCollection("collectionName");
DBObject groupFieldsInId = new BasicDBObject();
groupFieldsInId.put( "field1", "$field1");
groupFieldsInId.put( "field2", "$field2");
DBObject groupFields = new BasicDBObject( "_id", groupFieldsInId);
groupFields.put("count", new BasicDBObject( "$sum", 1));
DBObject group = new BasicDBObject("$group", groupFields );
AggregationOutput output = collection.aggregate(group);
有人已经用java做过同样的事情吗?如果您提供示例文档,那就更好了 您可以将查询转换为
Mongo Java
驱动程序,如下所示:
db.collection.aggregate([{'$group': {'count': {'$sum': 1}, '_id': {'field1': '$field1', 'field2': '$field2'}}}])
DBCollection collection = db.getCollection("collectionName");
DBObject groupFieldsInId = new BasicDBObject();
groupFieldsInId.put( "field1", "$field1");
groupFieldsInId.put( "field2", "$field2");
DBObject groupFields = new BasicDBObject( "_id", groupFieldsInId);
groupFields.put("count", new BasicDBObject( "$sum", 1));
DBObject group = new BasicDBObject("$group", groupFields );
AggregationOutput output = collection.aggregate(group);
您可以使用新文档并在那里传递参数。您在Java中用这个具体尝试了什么?您面临的问题是什么?我做了一些类似“AggregateIterable=connection.getCollection().aggregate(asList(新文档(“$group”),新文档(“\U id”,新文档($field1”,“$filed1”))。append(“count”,新文档($sum),1‘‘‘)’);“它正在按字段1进行分组,但当我想按字段1和字段2分组时,我遇到了麻烦