【发布时间】:2017-12-26 01:33:44
【问题描述】:
我收集了大约 100 万份文档。每个文档都有internalNumber 属性,我需要在我的node.js 代码中获取所有internalNumbers。
以前我用的是
db.docs.distinct("internalNumber")
或
collection.distinct('internalNumber', {}, {},(err, result) => { /* ... */ })
在节点中。
但随着集合的增长,我开始收到错误:distinct is too big, 16m cap。
现在我想使用聚合。它消耗大量内存并且速度很慢,但是没关系,因为我只需要在脚本启动时执行一次。我在 Robo 3T GUI 工具中尝试过:
db.docs.aggregate([{$group: {_id: '$internalNumber'} }]);
它有效,我想通过以下方式在 node.js 代码中使用它:
collection.aggregate([{$group: {_id: '$internalNumber'} }],
(err, docs) => { /* ... * });
但在 Node 中我得到一个错误:"MongoError: aggregation result exceeds maximum document size (16MB) at Function.MongoError.create"。
请帮助克服这个限制。
【问题讨论】:
标签: node.js mongodb aggregation-framework