我正在通过将现有文档'扩展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个插入。