通过c++驱动程序从MongoDB中批量删除

Bulk remove from MongoDB collection via C++ driver

本文关键字:删除 MongoDB c++ 驱动程序 通过      更新时间:2023-10-16

我使用MongoDB c++驱动程序(遗留)制作了一个简单的复制器。现在我想加快速度。矢量插入的插入操作要快得多(批量插入和单元素插入的时间差不多)。但我不知道删除一堆文件的最佳选择是什么。我有文档,我想删除作为mongo::BSONObj(与ObjectId的)向量。

我对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());