运行 将 mongocxx 中的查询聚合为字符串文字

Run aggregrate query in mongocxx as a string literal

在 mongocxx API, Collection.aggregate() expects a pipeline object in order to run an aggregate pipeline 查询中。这意味着使用管道 class 构建查询。如:

    mongocxx::pipeline p{};
    p.match(make_document(kvp("items.fruit", "banana")));
    p.sort(make_document(kvp("date", 1)));
    auto cursor = db["sales"].aggregate(p, mongocxx::options::aggregate{});

有没有办法通过传入字符串 运行 在 mongocxx 中进行聚合管道查询?我不打算使用 mongocxx 对象构建查询,而是 运行将查询作为字符串。

例如:

    db["sales"].aggregate("[{"$match": {  ... }}"]

其中“[{"$match": { ... }}" 是 std::string.

类型的管道聚合查询

是的,您可以使用 run_command 或 mongocxx::database

bsoncxx::builder::basic::document command_document{};

command_document.append(kvp(
"eval",
"function(username) {"
"return db.users.findOne( { username : username } );"
"}"));

command_document.append(kvp("args", [&](sub_array child) {
child.append(username);
}));

auto doc = db.run_command({command_document});

这是 mongocxx 在 Mongodb 上使用带参数 运行 的字符串函数的简单示例,现在您可以将它用于任何您想要的命令。 这是你需要的吗?