mongodb中FOR循环的问题

mongodb中FOR循环的问题,mongodb,Mongodb,我一直在使用下面的查询使用FOR循环将数据批量插入到集合中。当我对循环进行10000次迭代时,经过一些主要在5k和8k之间的迭代后,它会失败 db.OneCo.drop() var bulk = db.OneCo.initializeOrderedBulkOp(); var p = 0.1, q = 0.6 for (i = 1; i < 10000; i++) { bulk.insert({ _id : i + p,

我一直在使用下面的查询使用FOR循环将数据批量插入到集合中。当我对循环进行10000次迭代时,经过一些主要在5k和8k之间的迭代后,它会失败

db.OneCo.drop()
var bulk = db.OneCo.initializeOrderedBulkOp();
var p = 0.1, q = 0.6
    for (i = 1; i < 10000; i++) {
        bulk.insert({
            _id : i + p,
            Act : NumberInt(i),
            sqr : (i + p) * (i + p),
            M2 : (i + p) * 2,
            M3 : (i + p) * 3
        });
        bulk.insert({
            _id : i + q,
            Act : NumberInt(i),
            sqr : (i + q) * (i + q),
            M2 : (i + q) * 2,
            M3 : (i + q) * 3
        });
    }
    bulk.execute();
print(i)
db.OneCo.drop()
var bulk=db.OneCo.initializeOrderedBulkOp();
var p=0.1,q=0.6
对于(i=1;i<10000;i++){
批量插入({
_id:i+p,
法案:第(i)号,
sqr:(i+p)*(i+p),
M2:(i+p)*2,
M3:(i+p)*3
});
批量插入({
_id:i+q,
法案:第(i)号,
sqr:(i+q)*(i+q),
M2:(i+q)*2,
M3:(i+q)*3
});
}
bulk.execute();
印刷品(一)
理想情况下,上面的代码应该在集合中插入19998个文档,但是,每次执行代码时,我都会看到不规则的文档插入计数,大部分在11000到15000之间

有人能帮你找出代码的错误吗?

看起来你的代码有一些逻辑问题

试着在下面做

将i+p的所有结果放入阵列1

将i+q的所有结果放入阵列2

合并两个阵列并删除重复项


您最终只能获得9330个元素。

代码中似乎存在一些逻辑问题

试着在下面做

将i+p的所有结果放入阵列1

将i+q的所有结果放入阵列2

合并两个阵列并删除重复项


您最终只能获得9330个元素。

我将代码放在一个函数中,并执行它已处理所有文档的函数。 不确定直接查询有什么问题。
我认为这是RoboMongo接口的一个问题,它启动循环以在集合中插入文档,但在函数RoboMongo的情况下,它将命令发送到mongoDB,在mongoDB中循环被内部打开,文档被正确插入


然而,这已经解决了我的问题,所以将标记它在2-3天后有答案。如果有人能找到一个完美的理由,我会很高兴的。

我把我的代码放在一个函数中,并执行它处理所有文档的函数。 不确定直接查询有什么问题。
我认为这是RoboMongo接口的一个问题,它启动循环以在集合中插入文档,但在函数RoboMongo的情况下,它将命令发送到mongoDB,在mongoDB中循环被内部打开,文档被正确插入


然而,这已经解决了我的问题,所以将标记它在2-3天后有答案。如果有人能找到一个完美的理由,我会很高兴的。

失败的原因是什么?它实际上并不是因为错误而失败。代码执行成功,但我无法看到集合中插入的所有文档。是否尝试创建较低的块?比如1000的范围?另外,如果你用1000个项目创建了20个块,你是否会一个接一个地等待,这样它们就不会一次全部执行?我不知道如何创建较低的块。但是当我看到bulk.getOperations()时,我看到一个实例中推送了1000个文档。我认为不会同时执行所有操作,因为我使用了initializeOrderedBulkOp()。让我知道我的理解是否正确。我对这段代码没有任何问题。添加
19998
在2秒钟内记录失败的任何原因?它实际上并不是因为错误而失败。代码执行成功,但我无法看到集合中插入的所有文档。是否尝试创建较低的块?比如1000的范围?另外,如果你用1000个项目创建了20个块,你是否会一个接一个地等待,这样它们就不会一次全部执行?我不知道如何创建较低的块。但是当我看到bulk.getOperations()时,我看到一个实例中推送了1000个文档。我认为不会同时执行所有操作,因为我使用了initializeOrderedBulkOp()。让我知道我的理解是否正确。我对该代码没有任何问题。在2秒内添加
19998
记录