0
我試圖使用MongoDB cxx傳統驅動程序BSONBuilder構建一個$ in查詢。到現在爲止,我使用下面的代碼來構建一個簡單的ID =「...」查詢,從我收集的MongoDB單加載文件:
BSONObjBuilder b;
b.append("_ID", "...");
BSONObj p = b.obj();
現在我想例如生成一個查詢
{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }
,並用它通過接口來獲得一定範圍的文件:
...
auto_ptr<DBClientCursor> cursor = c.query("tutorial.persons", p);
while (cursor->more())
cout << cursor->next().toString() << endl;
....
請問你知道如何建立在使用BSONObjBuilder查詢$人嗎?或者還有其他一些竅門可以用ID查詢一個查詢來說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: {} }
我很高興對任何TIPP!非常感謝!
嗨Sagar,謝謝你的回答!我只是試過..但它只生成「{$ in:[,,... ]}」部分..你知道如何添加「字段」?再次感謝! –
AlexM
已更新。看看它是否有幫助。 – Veeram
嗨,我改變了我的來源。一旦到達帶有「b.done()」的行,就會引發SIGSEGV(分段錯誤)..您還有其他想法嗎? :>非常感謝您的幫助! – AlexM