0
MongoDB cxxレガシードライバBSONBuilderを使用して$ inクエリを作成しようとしています。今まで、私は私のMongoDBのコレクションから単一のドキュメントをロードするための簡単なID =「...」クエリを作成するには、次のコードを使用しています:
BSONObjBuilder b;
b.append("_ID", "...");
BSONObj p = b.obj();
今、私は、例えば、クエリを生成したいと思います
{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }
とインターフェースを介して文書の範囲を得るためにそれを使用する:あなたの誰かがBSONObjBuilderを使用してクエリで$を構築する方法を
...
auto_ptr<DBClientCursor> cursor = c.query("tutorial.persons", p);
while (cursor->more())
cout << cursor->next().toString() << endl;
....
知っていますか?または、クエリで別のトリックがあるとIDで1つのクエリで10のドキュメントを言うことができますか?
ありがとうございました。
更新:
私は次のスニペットを試しました。
mongo::BSONObjBuilder oBuilder;
// oBuilder.append(STR_FIELD_PARENT_ITEM_ID, aIDs);
mongo::BSONArrayBuilder oJsonIDarr;
for(unsigned int ii = 0; ii < aIDs.size(); ii++) {
oJsonIDarr << aIDs[ii];
}
oBuilder.append("$in", oJsonIDarr.arr());
BOOSTER_WARNING("Comment_Mongo") << "query: " << oBuilder.obj();
mongo::BSONObjBuilder oQueryObj;
oQueryObj.append(STR_FIELD_ID, oBuilder.obj());
BOOSTER_WARNING("Comment_Mongo") << "query: " << oQueryObj.obj();
最初のクエリobjは次のようになります。
query: { $in: [ "585c27f903733890966a618d", "585c278ed7cd3684afe5b495" ] }
とすぐに/ドライバをMongoDBのために送られたとして、例外がスローされます。..
第二には、次のクエリを出力します。
query: { _id: {} }
私は任意のティップについて満足しています!どうもありがとう!
こんにちはサガール、答えをありがとう!私はそれを試しただけですが、 "{$ in:[、、... ]}"部分を生成します。 "フィールド"を追加する方法も知っていますか?再度、感謝します! –
AlexM
更新されました。それが役立つかどうかを見てください。 – Veeram
こんにちは、私のソースでそれを変更しました。 "b.done()"という行に達するとすぐにSIGSEGV(Segmentation fault)を投げます。別のアイデアはありますか? >あなたの助けをありがとう! – AlexM