运行 将 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 上使用带参数 运行 的字符串函数的简单示例,现在您可以将它用于任何您想要的命令。
这是你需要的吗?
在 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 上使用带参数 运行 的字符串函数的简单示例,现在您可以将它用于任何您想要的命令。 这是你需要的吗?