繁体   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