簡體   English   中英

如何在新的C ++ Mongo驅動程序中使用游標

[英]How to use the cursor in the new C++ Mongo Driver

我正在使用新的C ++驅動程序從我的C ++程序訪問MongoDB。 通過本教程,我可以從數據庫中獲取整個集合。 我也可以指定過濾器,所以我只能得到一些。

但是,一旦我將集合數據導入程序,只有一個示例可用於檢查數據:

for (auto&& doc : cursor) {
    std::cout << bsoncxx::to_json(doc) << std::endl;
}

我想知道如何獲取集合的計數我也想知道如何在返回數據中獲得數字“i”,即:

光標[i]或類似的...當然不起作用。

感謝您在我們的示例中指出這種疏忽。 如果您願意,請在https://jira.mongodb.org/browse/CXX上的文檔組件中提交一個錯誤,請求我們的示例包含有關如何在客戶端上訪問數據的更多詳細信息。

你有兩個問題,真的:

  • 我如何計算 無用的答案是你可以編寫std::distance(cursor.begin(), cursor.end()) ,但你可能不想這樣做,因為它需要std::distance(cursor.begin(), cursor.end())所有數據服務器。 相反,您可能想要調用mongocxx::collection::count

  • 如何從游標中獲取第N個元素 首先,你確定這是你想要的嗎? 顯而易見的方法是執行auto view = *std::next(cursor.begin(), N-1) ,但同樣,由於上述原因,這可能不是你想要的,也因為訂單不是必須指明。 相反,看一下mongocxx::options::find::sortmongocxx::options::find::limitmongocxx:options::find::skip ,它可以讓你更好地控制返回的數據通過光標,以什么順序。

非常感謝,嗯! 我提交了錯誤,我想出了如何做到這一點。 為了幫助其他人,讓我在這里發布兩個代碼示例:

auto db = conn["db-name"];
int count = db["collection-name"].count( {} );

mongocxx::options::find opts;
opts.limit( 1 );
auto cursor = db["db-name"].find({ }, opts);

bsoncxx::document::view doc = *cursor.begin();  
std::cout << bsoncxx::to_json(doc) << std::endl;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM