我一直在使用以下查询使用FOR循环将数据批量插入集合。当我迭代循环10000次后,它在一些迭代之后失败,主要是在5k和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)
理想情况下,上面的代码应该在集合中插入19998个文档,但是,每次执行代码时,我都会看到插入的文档数量不规则,大多数介于11000和11000之间。 15000.
有人可以帮助代码出错吗?
答案 0 :(得分:0)
在您的代码中看起来像是一些逻辑问题。
尝试下面的操作,
将i + p的所有结果都带到array1
将i + q的所有结果带到array2
合并两个数组并删除重复项。
你最终只会获得9330个元素。
答案 1 :(得分:0)
我将我的代码放在一个函数中并执行它处理完所有文档的函数。 不确定直接查询有什么问题 我认为这是RoboMongo Interface的一个问题,它启动循环以在集合中插入文档但在函数的情况下Robomongo将命令发送到mongoDB,其中循环在内部打开并且文档正确插入。
然而,这已经解决了我的问题,所以在2-3天之后会标记它有答案。如果有人能找到完美的理由我会很高兴。