无法使用Mongo C ++驱动程序插入Mongo DB Docker容器

时间:2020-04-13 16:28:37

标签: c++ mongodb docker

我在使用Mongo C ++驱动程序时遇到了麻烦,并将文档插入到在Docker容器中运行的mongo数据库中。

Mongo Container通过以下命令启动:

docker run -d -p 27017:27017 --restart =除非停止--name MYDB mongo --bind_ip_all

它已经启动并正在运行,我可以从docker控制台访问它并检查数据库。

我有一个使用Mongo C ++驱动程序的应用程序,并且按照Mongocxx文档中的示例,我一直试图将文档插入数据库中,但是每次我执行“ insert_one”调用时,该应用程序都会抛出该异常。异常(下级停止,因为它触发了异常)。

这是我正在使用的代码,我要做的就是创建一个mongo实例,设置数据库和集合,然后使用基本构建器创建一个简单文档,然后尝试将文档插入mongo db。

#include <bsoncxx/builder/basic/array.hpp>
#include <bsoncxx/builder/basic/document.hpp>
#include <bsoncxx/builder/basic/kvp.hpp>
#include <bsoncxx/json.hpp>
#include <bsoncxx/types.hpp>
#include <cstdint>
#include <iostream>
#include <mongocxx/stdx.hpp>
#include <mongocxx/uri.hpp>

using bsoncxx::builder::basic::kvp;
using bsoncxx::builder::basic::make_array;
using bsoncxx::builder::basic::make_document;

mongocxx::instance inst{};
mongocxx::client conn{mongocxx::uri{"mongodb://172.17.0.2:27017"}};
auto db   = conn.database( "testdb" );
auto coll = db.collection( "testcollection" );

bsoncxx::document::value testDoc = make_document( 
      kvp( "firstname", "luke" ),
      kvp( "lastname", "skywalker" ) );

      auto res    = coll.insert_one( testDoc.view() );

其他信息: 我的mongo URI是“ mongodb://172.17.0.2:27017”,其中172.17.0.2是docker容器的IP。 该应用程序可以编译,链接并正常运行,并且仅在我尝试插入时崩溃。 数据库和集合的指针似乎是正确的(不为null)。 我的操作系统是Windows 7,该应用程序是用QT 5.12.5编写的。

初始化mongo C ++驱动程序还需要做其他事情吗?

0 个答案:

没有答案