Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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 在新集合中的多个id字段上保存Mongodb聚合结果_Java_Mongodb_Aggregation Framework - Fatal编程技术网

Java 在新集合中的多个id字段上保存Mongodb聚合结果

Java 在新集合中的多个id字段上保存Mongodb聚合结果,java,mongodb,aggregation-framework,Java,Mongodb,Aggregation Framework,我必须通过java驱动程序在mongodb中聚合一些数据,并将聚合结果保存在新集合中,然后在Jtable中打印此集合;在我的情况下,id字段可能并不简单,我不知道它是否为单个值,因此我遵循以下步骤: 如果要将结果保存到新集合中,请执行以下操作: for (DBObject result : output.results()) { report.insert(result); } 我有一个错误: 线程AWT-EventQueue-0 java.lang.IllegalA

我必须通过java驱动程序在mongodb中聚合一些数据,并将聚合结果保存在新集合中,然后在Jtable中打印此集合;在我的情况下,id字段可能并不简单,我不知道它是否为单个值,因此我遵循以下步骤:

如果要将结果保存到新集合中,请执行以下操作:

for (DBObject result : output.results()) {
        report.insert(result);
    }
我有一个错误: 线程AWT-EventQueue-0 java.lang.IllegalArgumentException中出现异常:数据库中存储的字段不能包含。在他们里面。坏键:“store.address.store\u state”

这是我进行聚合的集合的一部分:

{
"_id" : ObjectId("549ef5d17c8db9efa75d49c9"),
"store" : {
  "store_id" : NumberLong(2),
  "store_type" : "Small Grocery",
  "region_id" : NumberLong(78),
  "store_name" : "Store 2",
  "store_number" : NumberLong(2),
  "address" : {
    "store_street_address" : "5203 Catanzaro Way",
    "store_city" : "Bellingham",
    "store_state" : "WA",
    "store_postal_code" : "55555",
    "store_country" : "USA",
    "store_manager" : "Smith"
  },
  .....}
有人能帮我吗

注意:ID字段可以是简单字段,也可以是复杂的两个或多个字段 我要创建的新集合必须包含聚合中构成ID的所有字段,并且所有字段都是聚合的结果。这是因为我必须以这种方式打印该收藏:

例如:

DBObject fields = new BasicDBObject("unit_sales", 1);
            fields.put("store.store_type", 1);
            fields.put("store.store_name", 1);
            fields.put("store.address.store_city", 1);
            fields.put("_id", 0);
            DBObject project = new BasicDBObject("$project", fields );

 Map<String, Object> dbObjIdMap = new HashMap<String, Object>();
            dbObjIdMap.put("store_type", "$store.store_type");
            dbObjIdMap.put("store_name", "$store.store_name");
            dbObjIdMap.put("store_city", "$store.address.store_city");
            DBObject groupFields = new BasicDBObject( "_id", dbObjIdMap);

            groupFields.put("average", new BasicDBObject("$avg", "$unit_sales"));
            DBObject group = new BasicDBObject("$group", groupFields);

AggregationOutput output = collection.aggregate(project, group);
因此,我想要一个列为store\u type、store\u name、store\u city、average的表


我知道我在这里暴露了我的问题,但我不是英国人,而且我的英语说得不好,所以请试着理解我。。抱歉

错误清楚地表明,您试图持久保存到mongoDB的文档中的字段名不能存在。在他们里面。您能否打印和更新您的帖子以反映您试图在报告中插入的文档。插入…您可以添加您的请求吗?抱歉,我现在添加请求