插入后MongoDB记录丢失

时间:2013-07-06 17:53:36

标签: c++ mongodb

我在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条记录。

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

1 个答案:

答案 0 :(得分:2)

在你的循环结束时(紧接在你的循环之后)你缺少mongo.insert("insert_test.col1", bulk_data); - 除非RECORDS小于10000的倍数(你说它是1000000,不是) ,然后没有插入最后的9999次迭代,因为它们仍然在bulk_data

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

此外,插入后需要清除bulk_data

if (i % 10000 == 0) {
    mongo.insert("insert_test.col1", bulk_data);
    bulk_data.clear();  //  <-----
}
相关问题