Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java驱动程序的mongodb分组和子分组_Java_Mongodb_Aggregation Framework - Fatal编程技术网

使用java驱动程序的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

我需要以这种方式查询mongodb,以通过
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分组时,我遇到了麻烦