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

how convert mongo shell command to mongocxx grammar

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

您是否尝试打印出来 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);
    }