调试映射/减少,如何获得超过文档大小



我正在运行一个map/reduce作业,但它失败了,因为reduce步骤超过了bson文档的16mb限制。我没有办法调试它了。

exception: BSONObj size: 16808001 (0x41780001) is invalid.
Size must be between 0 and 16793600(16MB)
First element: 0: { 531.343: { 2: [ { strength: 121.0, acc: 23.0 } ] } }

我的问题是,我无法访问文档,只能访问输入的第一个元素。有没有办法得到完整的东西?

我的想法是在reduce javascript中检查输出的大小,并将数据打印到mongo日志中。但是

  1. 我找不到在map/reduce函数中确定某个东西的BSON大小的方法
  2. 我试图用JSON估计BSON的大小,但它从未触发:
if(JSON.stringify(ret).length > 10000000) {
    print('Document of size: ' + JSON.stringify(ret).length);
    print(JSON.stringify(ret));
    print();
}
return ret;

还有其他想法吗?

Object.bonsize({……})将计算文档的BSON大小。

此外,10000000/1024/1024只有大约9mb,所以我不确定你的测试是否会发现它。

相关内容

  • 没有找到相关文章

最新更新