【问题标题】:Bulk remove from MongoDB collection via C++ driver通过 C++ 驱动程序从 MongoDB 集合中批量删除
【发布时间】:2015-09-29 13:22:24
【问题描述】:

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

【问题讨论】:

    标签: c++ mongodb


    【解决方案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());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      相关资源
      最近更新 更多