0

我在 Linux 上使用 MongoDB 2.4.5 64 位,使用 C++ API 插入 1 M 记录

连接后我确实打开了写关注

   mongo.setWriteConcern(mongo::W_NORMAL);

   for (int i=0; i<RECORDS; i++) {
        mongo::BSONObj record = BSON (
                "_id" << i <<
                "mystring" << "hello world" );
        bulk_data.push_back(record);

        if (i % 10000 == 0) {
            mongo.insert("insert_test.col1", bulk_data);

        }
    }

令人惊讶的是,当我计数时(通过count(),它只显示来自集合'insert_test.col1'的990001条记录。

我做错了什么?谢谢你的帮助。

4

1 回答 1

2

您在mongo.insert("insert_test.col1", bulk_data);循环结束时(立即之后)丢失了 - 除非RECORDS小于 10000 的倍数(您说它是 1000000,但不是),那么最后的 9999 次迭代不会被插入,因为它们是还在bulk_data

换句话说,iis 仅999999在循环的最后一次迭代中,因此if不输入,并且bulk_data不插入最后放入的 9999 条记录。

另外,bulk_data插入后需要清除:

if (i % 10000 == 0) {
    mongo.insert("insert_test.col1", bulk_data);
    bulk_data.clear();  //  <-----
}
于 2013-07-06T18:04:02.107 回答