我是mongodb的新手。我想使用c ++驱动程序执行查询(a = 3 OR b = 5作为条件)。
我可以通过BSONObjBuilder为每个a = 3和b = 5分别创建两个BSONObj对象,如下所示。
mongo::BSONObjBuilder builder = new mongo::BSONObjBuilder;
mongo::BSONObjBuilder inner = new BSONObjBuilder(builder->subobjStart(condition));
inner->append("$gte", value);
inner->append("$lte", value);
mongo::BSONObj obj = builder.obj();
所以我有2个不同的BSONObj。我可以成功运行它们。但是我如何使用$或$和逻辑运算符组合这些对象。
答案 0 :(得分:2)
假设您的目标是查询{$or: [{a: 3}, {a: 5}]}
,您可以使用MongoDB C ++驱动程序构建它,如下所示:
mongo::BSONObjBuilder queryBuilder;
mongo::BSONArrayBuilder orClause(queryBuilder.subarrayStart("$or"));
mongo::BSONObjBuilder firstClause(orClause.subobjStart()).append("a", 3).done();
mongo::BSONObjBuilder secondClause(orClause.subobjStart()).append("a", 5).done();
orClause.done();
mongo::BSONObj query(queryBuilder.obj());
使用OR帮助程序的方式要简单得多:
mongo::BSONObj query(OR(BSON("a" << 3), BSON("a" << 5));