Mongodb 插入mongo forEach将永远持续

Mongodb 插入mongo forEach将永远持续,mongodb,Mongodb,我通过将现有文档“扩展”20倍来创建一些假文档。但是forEach循环似乎永远不会结束。为什么? db['COLLECTION'].find({}).forEach(function(doc){ for( var x = 0; x < 20; x++ ) { delete doc['_id']; doc['Author'] = randArrayElement(names); /* chooses random name */

我通过将现有文档“扩展”20倍来创建一些假文档。但是forEach循环似乎永远不会结束。为什么?

db['COLLECTION'].find({}).forEach(function(doc){
    for( var x = 0; x < 20; x++ ) {
            delete doc['_id'];
            doc['Author'] = randArrayElement(names); /* chooses random name */
            doc['Description'] = buzzword(); /* makes something up*/

            db['COLLECTION'].insert(doc);
        }
    }
 )
db['COLLECTION'].find({}).forEach(函数(doc){
对于(变量x=0;x<20;x++){
删除单据[''id'];
doc['Author']=randArrayElement(名称);/*选择随机名称*/
doc['Description']=buzzword();/*编造了一些东西*/
db[“收款”]。插入(单据);
}
}
)
我认为您需要在此处使用:

我假设发生这种情况是因为写入操作可能会导致文档移动,而快照会修复它:

$snapshot运算符可防止光标返回文档 不止一次,因为中间的写入操作会导致 移动文档


如果这没有帮助,那么我有另一个想法,新创建的文档将被光标拾取。为了克服这个问题,我将创建一个包含所有文档的数组,然后分别对它们进行迭代,并对每个文档进行20次插入。

是否向集合中添加了任何记录,只是花了很长时间,还是没有插入任何内容?文档将被添加到集合中。它似乎从未停止添加它们。我有50份文件,预计是50x20份,但似乎插入了两万多份。你知道为什么吗?我不得不做一些类似的事情,不知道你能不能给我一些建议?是因为forEach中有for循环吗?只是随口说说,但我基本上只需要将文档从一台服务器传输到下一台服务器,但如果我只有1000个,我不想要10K+。如果您能提供任何有关此问题/答案的指导,我们将不胜感激。使用快照解决了此问题。
db['COLLECTION'].find().snapshot().forEach(function(doc){
  ...
})