我使用MongoDB C ++驱动程序(遗留)创建了一个简单的复制器。现在我正在努力加快速度。使用矢量插入时插入操作要快得多(批量插入与单个元素插入大致相同)。 但我无法确定删除大量文档的最佳选择。 我有想要删除的文件作为mongo :: BSONObj(使用ObjectId)的向量。
答案 0 :(得分:1)
我查询了ObjectId,每个文档都有一次删除。喜欢这个
{"_id" : {$in : [ObjectId("..."), ...]}}
它表现出更好的性能。这是我在C ++中的示例代码
std::vector<mongo::BSONObj> bulk_data;
...
std::stringstream ss;
ss << "{\"_id\" : {$in : [";
for(size_t j = 0; j < bulk_data.size(); ++j)
{
if(j != 0)
ss << ",";
ss << "ObjectId(\"" << bulk_data[j]["_id"].OID() << "\")";
}
ss << "]}}";
conn_src->remove( "test.col1" , ss.str());