首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在c++驱动程序中组合mongo::Query

在c++驱动程序中组合mongo::Query
EN

Stack Overflow用户
提问于 2013-01-15 05:41:03
回答 2查看 1.3K关注 0票数 1

我正在使用MongoDb的c++驱动程序,并尝试将mongo::Query类和JSON query组合为一个字符串。

在我的示例中,我尝试组合使用q1、q2和q3。我可以在try catch中将q3转换为mongo::fromjson(q3);,以便在最后的合并之前捕获不想要的错误,但我不确定这是否是最好的方法。

到目前为止,我唯一的尝试是使用BSON_ARRAY来组合单独的部分,但这仍然不是我想要的方式(尽管不稳定)。

代码语言:javascript
运行
复制
///The output im trying to achieve is:
// {a : 1,b : 2, c : 3}

const mongo::Query q1 = QUERY("a" << 1);
const mongo::Query q2 = QUERY("b" << 2);
const std::string q3 = "{c : 3}";

// Attempt 1. I know it does not work.
mongo::Query qAll = BSON_ARRAY(q1.toString() << q2.toString());

std::cout << q1.toString() << std::endl;
// Outputs { a: 1 } as expected

std::cout << q2.toString() << std::endl;
// Outputs { b: 2 } as expected

std::cout << qAll.toString() << std::endl;
// Outputs { 0: "{ a: 1 }", 1: "{ b: 2 }" }, expected but wrong.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-15 07:00:25

你不能避免使用我看到的BSONObjBuilder,但是你可以通过更好地利用BSONObjBuilder提供的API来让自己的生活变得更容易一些:

代码语言:javascript
运行
复制
const mongo::Query q1 = QUERY("a" << 1);
const mongo::Query q2 = QUERY("b" << 2);
const std::string q3 = "{c : 3}";

mongo::BSONObjBuilder builder;
builder.appendElements(q1.getFilter());
builder.appendElements(q2.getFilter());
builder.appendElements(mongo::fromjson(q3));
const mongo::Query qAll(builder.obj());

std::cout << qAll.toString() << std::endl;
票数 1
EN

Stack Overflow用户

发布于 2013-01-15 05:59:49

到目前为止,这是我想出的最优雅的方式,有什么想法/建议吗?

代码语言:javascript
运行
复制
mongo::Query combineQueries(const mongo::Query q1, const mongo::Query q2) {
    mongo::BSONObjBuilder obAll;
    mongo::BSONObjIterator ii = q1.getFilter().begin();
    while (ii.more()) {
        obAll.append(ii.next());
    }

    ii = q2.getFilter().begin();
    while (ii.more()) {
        obAll.append(ii.next());
    }

    return obAll.obj();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14327234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档