插入Mongo Foreach永远继续存在



我正在通过将现有文档'扩展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().snapshot().forEach(function(doc){
  ...
})

我认为这是因为写操作可能会导致文档的移动并快照修复它:

$快照操作员防止光标返回文档 不止一次,因为中间写操作导致 移动文档。

如果这无济于事,那么我还有一个想法,即光标拾取了新创建的文档。为了克服这一点,我将创建所有文档的数组,然后单独迭代它们,并为每个文档进行20个插入。

最新更新