插入后MongoDB记录丢失

MongoDB record missing after insertion

本文关键字:记录 MongoDB 插入      更新时间:2023-10-16

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

连接后,我确实打开了写问题

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

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

您在循环结束时(紧接着)缺少mongo.insert("insert_test.col1", bulk_data);——除非RECORDS小于10000的倍数(您说它是1000000,实际上不是),否则不会插入最后9999次迭代,因为它们仍在bulk_data中!

换句话说,i只是循环中最后一次迭代的999999,因此不会输入if,也不会插入放入bulk_data中的最后9999条记录。

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

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