我们在 node.js 中生成了多个大约10,000个文档的集合(将来会越来越多),需要多次存储/查询/过滤/投影我们有一个 mongodb aggregation pipeline。一旦满足某些条件,就会重新生成并存储文档。
当我们有5,000个文件时,一切正常。我们将它们作为数组插入到单个文档中,并在聚合管道中使用unwind
。但是,在某个时刻,文档不再适合单个文档,因为它超过了16 MB的文档大小限制。我们需要批量存储所有内容,并添加一些标识符以了解它们属于哪个“集合”,因此我们只能在这些文档上使用管道。
问题:在我们可以在管道中查询文件之前编写文件是有问题的。 bulk.execute()
部分可能需要10到15秒。将它们添加到node.js中的数组并将< 16 MB doc文档写入MongoDB只需要几分之一秒。
bulk = col.initializeOrderedBulkOp();
for (var i = 0, l = docs.length; i < l; i++) {
bulk.insert({
doc : docs[i],
group : group.metadata
});
}
bulk.execute(bulkOpts, function(err, result) {
// ...
}
我们如何解决批量写入开销延迟?
到目前为止的想法: