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

标签 c++ mongodb

我使用 MongoDB C++ 驱动程序(旧版)制作了一个简单的复制器。现在我想加快速度。 vector 插入的插入操作要快得多(批量插入与单个元素插入显示的时间大致相同)。 但我不知道什么是删除一堆文件的最佳选择。 我有要删除的文档,作为 mongo::BSONObj 的 vector (带有 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());

关于c++ - 通过 C++ 驱动程序从 MongoDB 集合中批量删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32845144/

相关文章:

node.js - 如何使用原子查询更新 Mongoose 中另一个子文档内的子文档?

mongodb - 排序多个条件MongoDB

c++ - Docker不启动cpp应用程序

c++ - CCPoint 到 float 转换

c# - 从未见过 C++ for 循环

javascript - 从 MongoDB 中删除匹配 "this text"的条目

javascript - Mongoose 和 Node.js 中的类型错误 : [function name] is not a function,

c++ - cygwin 控制台上没有错误或 cout 消息

c++ - QtPlugin 无法加载库

javascript - MongoDB:如何在带有时间戳输入的查询中按 15 分钟时间段进行过滤?