mongodb-将字段追加到BSONObj

jea*_*ean 3 c++ mongodb

mongodb c ++驱动器通过BSONObjBuilder构造了一个BSONObj对象,但实际上需要将字段附加到BSONObj,例如:

BSONObj base_part_query()
{
    return BSON(...);
}

void q1()
{
    BSONObj obj = base_part_query();
    obj.appendField("q1_special","v"); // mongo driver has no such api
    // query by q1
}
void q2()
{
    BSONObj obj = base_part_query();
    obj.appendField("q2_special","v"); // mongo driver has no such api
    // query by q2
}
Run Code Online (Sandbox Code Playgroud)

如果我不做base_part_query,在qn()中将有n个BSON(...)的副本。这是不好的。

jea*_*ean 6

我找到了一种方法:

BSONObj o = (mongo::BSONObjBuilder().appendElements(base_part_query())<<"q1_special"<<BSON("$lte"<<111)).obj()
Run Code Online (Sandbox Code Playgroud)