使用C++11和相关驱动访问MongoDb
#include <cstdio>
#include <iostream>
#include <bsoncxx/array/view.hpp>
#include <bsoncxx/builder/stream/document.hpp>
#include <bsoncxx/json.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
using namespace std;
using bsoncxx::builder::stream::document;
using bsoncxx::builder::stream::finalize;
int main()
{
mongocxx::instance inst{};
mongocxx::client conn{ mongocxx::uri{} };
auto collection = conn["DbName"]["CollectionName"];
auto result = collection.find_one(document{} << "_id" << "Id" << finalize);
auto doc = *result;
auto view = doc.view();
//似乎一个view只能一次使用view["abc"]
//否则会crash
//auto enableView = view["Enable"];
//auto enable = enableView.get_bool().value;
auto accountsView = view["Accounts"];
auto accounts = accountsView.get_array().value;
for (auto acc : accounts)
{
auto v = acc.get_value();
auto tp = v.type();
if (tp == bsoncxx::type::k_utf8)
{
auto str = v.get_utf8().value.to_string();
cout << str << endl;
}
}
return 0;
}
事例中包含了读取Document中string[]的代码
其中使用for( auto acc : accounts ) 的迭代方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能