mongodb中FOR循环的问题

时间:2016-06-30 07:10:47

标签: mongodb

我一直在使用以下查询使用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.
有人可以帮助代码出错吗?

2 个答案:

答案 0 :(得分:0)

在您的代码中看起来像是一些逻辑问题。

尝试下面的操作,

将i + p的所有结果都带到array1

将i + q的所有结果带到array2

合并两个数组并删除重复项。

你最终只会获得9330个元素。

答案 1 :(得分:0)

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

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