Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理mongodb中预创建的2个BSONObj之间的逻辑运算_Mongodb_Mongodb Query - Fatal编程技术网

如何处理mongodb中预创建的2个BSONObj之间的逻辑运算

如何处理mongodb中预创建的2个BSONObj之间的逻辑运算,mongodb,mongodb-query,Mongodb,Mongodb Query,我是mongodb的新手。我想用C++驱动程序执行查询(A=3或B=5)作为条件。 我可以通过BSONObjBuilder为每个a=3和b=5分别创建两个BSONObj对象,如下所示 mongo::BSONObjBuilder builder = new mongo::BSONObjBuilder; mongo::BSONObjBuilder inner = new BSONObjBuilder(builder->subobjStart(condition)); inner->

我是mongodb的新手。我想用C++驱动程序执行查询(A=3或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();

所以我有两个不同的BSONObj。我可以成功地运行它们。但是如何使用$or$和逻辑运算符组合这些对象呢 { $或:[ {a:3 },{a::5 } }< /> >,您可以用MunGDB 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));
mongo::BSONObj查询(或(BSON)(“a”)