通过C ++驱动程序从MongoDB集合中批量删除

时间:2015-09-29 13:22:24

标签: c++ mongodb

我使用MongoDB C ++驱动程序(遗留)创建了一个简单的复制器。现在我正在努力加快速度。使用矢量插入时插入操作要快得多(批量插入与单个元素插入大致相同)。 但我无法确定删除大量文档的最佳选择。 我有想要删除的文件作为mongo :: BSONObj(使用ObjectId)的向量。

1 个答案:

答案 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());