如何将mongo shell命令转换为mongocxx语法

问题描述 投票:1回答:1

db.members.find({“groupId”:115,userId:{$ in:[1000,1001]}});

我发现很多地方,包括MongoDB / GitHub。但没有用,谁能告诉我如何使用c ++实现这个查询,非常感谢你!

如下不能奏效:

auto members = bsoncxx::builder::basic::array{};
for (vector<string>::size_type i = 0; i != userIds.size(); ++i) {
        int id = std::atoi(userIds[i].c_str());
        bsoncxx::builder::basic::document doc;
        doc.append(kvp("userId", id));
        members.append(doc);
    }

auto docValue = make_document(kvp("id", gid), kvp("$in", members)));
auto res = coll.delete_many(docValue.view());
c++ mongodb mongo-cxx-driver
1个回答
0
投票

您是否尝试打印mongocxx:to_json(docValue)以查看它的外观?我预测它看起来不像你想的那样。它会出现像$in : [ { 'userId' : 1001, 'userId' : 1002, ... } ]这样的东西。

相反,只需在循环中直接附加到成员:

auto members = bsoncxx::builder::basic::array{};
for (vector<string>::size_type i = 0; i != userIds.size(); ++i) {
        int id = std::atoi(userIds[i].c_str());
        members.append(id);
    }
© www.soinside.com 2019 - 2024. All rights reserved.