插入后缺少MongoDB记录 < >我使用Linux上的MunGDB 2.4.5 64位,使用C++ API插入1 m记录< /p>
在连接之后,我确实打开了write concern插入后缺少MongoDB记录 < >我使用Linux上的MunGDB 2.4.5 64位,使用C++ API插入1 m记录< /p>,c++,mongodb,C++,Mongodb,在连接之后,我确实打开了write concern mongo.setWriteConcern(mongo::W_NORMAL); for (int i=0; i<RECORDS; i++) { mongo::BSONObj record = BSON ( "_id" << i << "mystring" << "hello world" );
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);
}
}
mongo.setWriteConcern(mongo::W_NORMAL);
对于(int i=0;i您在循环结束时(紧接着)缺少mongo.insert(“insert_test.col1”,bulk_data)
,除非记录
比10000的倍数少一倍(您说是1000000,不是),否则最后9999次迭代不会被插入,因为它们仍然在bulk_data
中
换句话说,i
仅在循环的最后一次迭代中999999
,因此未输入if
,并且未插入放入bulk_data
的最后9999条记录
此外,bulk\u数据
插入后需要清除:
if (i % 10000 == 0) {
mongo.insert("insert_test.col1", bulk_data);
bulk_data.clear(); // <-----
}
if(i%10000==0){
插入(“插入测试.col1”,批量数据);
bulk_data.clear();//我可以看到您从中获得了此示例代码,但它们有相同的错误……我已经留下了注释!