RMONGODB:聚合失败,错误" mongoDB错误:10"在处理大型数据集时

时间:2016-05-05 10:50:16

标签: mongodb aggregation-framework

我有一个拥有600多万份文件的收藏品F.该集合具有以下结构

         { 
            "_id" : ObjectId("5718277b3f33da6dfaeaec88"), 
            "f_id" : "F1", 
            "f_date" : ISODate("2017-02-01T00:00:00.000+0000"), 
            "effectiveTimeStamp" : ISODate("2016-11-01T00:00:00.000+0000"), 
            "level1" : [
                {
                    "sequence" : "1", 
                    "level2"   : [
                    {"c_Code" : "TR",
                     "level3" : [{ "flevel_total" : 51
                                  }
                                ]
                    }
                    ]
                }
            ]
         }

我需要从这些文档中解构几个数组字段以便进一步处理。

   minfdate <-as.POSIXct('2016-12-01', tz = "GMT") 
   maxfdate <- as.POSIXct('2017-01-10', tz = "GMT")

   coll_name = 'test.F'

cmd_list = list(
  mongo.bson.from.list(list("$match" = 
                              list( "$and" = list(list("Date" = list("$gte" = as.POSIXct(minfdate, tz = "GMT"))),list("Date" = list("$lte" = as.POSIXct(maxfdate, tz = "GMT")))))
  )),
mongo.bson.from.JSON('{"$unwind": "$level1"}'),
mongo.bson.from.JSON('{"$unwind": "$level1.level2"}'),
mongo.bson.from.JSON('{"$unwind": "$level1.level2.level3"}'),
mongo.bson.from.JSON('{"$project": {
                     "f_Id":            "$f_Id", 
                     "f_Date": "$Date",
                     "sequence":            "$level1.sequence",
                     "effectiveTimeStamp" : "$effectiveTimeStamp",
                     "c_Code":           "$level1.level2.c_code",
                     "f_Total":     "$level1.level2.level3.flevel_total",
                    }
                     }')
 )

  f_output = mongo.aggregation(db, coll_name, cmd_list)

当我使用较大的日期范围来过滤记录时,我在mongo.aggregation(db,coll_name,cmd_list)中收到错误&#34; 错误:   mongoDB错误:10。请检查?mongo.get.err以获取更多详细信息。 &#34;

但是,如果我每次都使用较小的日期范围多次运行相同的程序,则代码会成功运行。我已经尝试将会话超时时间增加到一个较大的值,以检查是否有任何区别,但即使这样做也不起作用。 我在这里做错了什么想法?感谢我能解决这个问题的任何帮助。

0 个答案:

没有答案