从 MongoDB 读取数据
Overview
在此页面上,您可以查看可复制的代码示例,这些示例显示了用于检索文档的常见C++驾驶员方法。
提示
要了解有关此页面上显示的任何方法的更多信息,请参阅每个部分中提供的链接。
要使用本页中的示例,请将代码示例复制到示例应用程序或您自己的应用程序中。 请务必将所有占位符(例如 <connection string>
)替换为您的MongoDB 部署的相关值。
示例应用程序
您可以使用以下示例应用程序来测试本页上的代码示例。 要使用示例应用程序,请执行以下步骤:
确保您已将C++驾驶员安装在项目可以导入的位置。
复制以下代码,并将其粘贴到项目中的新
.cpp
文件中。从本页复制代码示例,并将其粘贴到文件的突出显示部分。
1 2 3 4 5 6 7 8 9 10 using bsoncxx::builder::basic::kvp; 11 using bsoncxx::builder::basic::make_document; 12 13 int main() { 14 try { 15 mongocxx::instance instance; 16 17 mongocxx::uri uri("<connection string>"); 18 mongocxx::client client(uri); 19 20 auto database = client["<database name>"]; 21 auto collection = database["<collection name>"]; 22 23 // Start example code here 24 25 // End example code here 26 27 } catch (const mongocxx::exception& e) { 28 std::cout << "An exception occurred: " << e.what() << "\n"; 29 return EXIT_FAILURE; 30 } 31 32 return EXIT_SUCCESS; 33 }
找到一个
以下代码演示如何从集合中检索与指定条件匹配的单个文档:
auto result = collection.find_one(make_document(kvp("<field name>", "<value>"))); std::cout << bsoncxx::to_json(*result) << std::endl;
要学习;了解有关find_one()
方法的详情,请参阅《检索数据》指南中的查找一个文档部分。
查找多个
以下代码演示如何从集合中检索符合指定条件的所有文档:
auto results = collection.find(make_document(kvp("<field name>", "<value>"))); for(auto&& doc : results) { std::cout << bsoncxx::to_json(doc) << std::endl; }
要学习;了解有关find()
方法的更多信息,请参阅《检索数据》指南中的《查找多个文档》部分。
对集合中的文档进行计数
以下代码演示如何计算集合中的文档数量:
auto result = collection.count_documents({}); std::cout << result << std::endl;
要学习;了解有关count_documents()
方法的更多信息,请参阅《文档计数》指南中的《检索准确计数》部分。
对查询返回的文档进行计数
以下代码演示如何对集合中符合指定条件的文档进行计数:
auto result = collection.count_documents(make_document(kvp("<field name>", "<value>"))); std::cout << result << std::endl;
要学习;了解有关count_documents()
方法的更多信息,请参阅《文档计数》指南中的《检索准确计数》部分。
估计文档计数
以下代码演示如何检索集合中文档数量的估计值:
auto result = collection.estimated_document_count(); std::cout << result << std::endl;
要学习;了解有关estimated_document_count()
方法的更多信息,请参阅 计数文档指南中的检索估计计数部分。
Retrieve Distinct Values
以下代码演示如何检索符合指定条件的文档的字段唯一值:
auto results = collection.distinct("<field name>", "<filter>"); for(auto&& doc : results) { std::cout << bsoncxx::to_json(doc) << std::endl; }
要了解有关distinct()
方法的更多信息,请参阅“检索不同字段值”指南。
监控数据变化
以下代码展示了如何监控和打印对集合的更改:
auto stream = collection.watch(); while (true) { for (const auto& event : stream) { std::cout << bsoncxx::to_json(event) << std::endl; } }
要学习;了解有关watch()
方法的更多信息,请参阅《监控数据更改》指南。