debug map / reduce,如何获得超出文档的大小?

时间:2013-08-06 14:22:50

标签: mongodb mapreduce bson

我正在运行map / reduce作业,但由于reduce步骤超过了bson文档的16 mb限制,因此失败了。我没有想法如何调试它。

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的大小,但它从未触发:
  3. if(JSON.stringify(ret).length > 10000000) {
        print('Document of size: ' + JSON.stringify(ret).length);
        print(JSON.stringify(ret));
        print();
    }
    return ret;
    

    还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

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

10000000/1024/1024也只有〜9mb所以我不确定你的测试是否会抓住它。