问题标签 [mongo-cxx-driver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1484 浏览

c++ - 使 mongo-cxx-driver 找不到包含

我一直在尝试在 OSX 10.10 上为 C++11 编译 mongo-cxx-driver,但我遇到了一些麻烦。libbson 和 mongo-c-driver 均已成功构建和安装,库到 /usr/local/lib,头文件到 /usr/local/include/libbson-1.0 和 /usr/local/include/libmongoc-1.0分别。我从 mongo-cxx-driver/build 目录成功运行了 cmake,这是 shell 的整个输出:

当我从 mongo-cxx-driver 目录运行 make 时,出现以下错误:

显然编译器找不到那些包含...但是为什么呢?这不是在 cmake 命令行中设置的 LIBBSON_DIR 和 LIBMONGOC_DIR 吗?

编辑:我使用 cmake 从他们的 git 源构建了 C 驱动程序和 libbson;制作; 须藤使安装。今天我从头开始使用 mongo-cxx-driver,记录所有问题。mongo-cxx-driver/build 中的 cmake 生成以下输出:

/mongo-cxx-driver/build/CMakeFiles/CMakeOutput.log 中来自 cmake 的日志包含(为简洁起见,仅显示 C++11 相关行):

(如果需要其他线路,我很乐意发送它们)。ls /usr/local/lib/pkgconfig 显示以下内容:

0 投票
1 回答
221 浏览

c++ - Mongo C++ 驱动程序能够绕过文档结构规则(关于不以 $ 开头的键的规则)

如果我尝试在 MongoDB 中插入一个以某个键开头的文档,$则会收到一条错误消息:

(我有一个使用 Node.js 驱动程序的类似行为的观察者)

但是,运行以下 C++ 程序:

我可以插入它,如图find()所示:

因此,C++ 驱动程序似乎能够“绕过” MongoDB 文档中描述的文档结构规则。这种行为有什么解释吗?它可能会以某种方式“破坏” MongoDB 数据库(我想这种限制是有充分理由的,并且数据库中的文档不尊重它可能是有问题的)

我观察到只有当密钥$不在第一级时才会发生这种情况。例如,如果我使用

然后我得到一个一致的错误

以防万一,我使用的是 MongoDB 3.2.0 和旧版 C++ 驱动程序 1.0.7

0 投票
2 回答
2112 浏览

c++ - 在 Windows 上构建 mongocxx 驱动程序时出错

我正在尝试遵循本指南,目前处于第 3 步。

所以跑完之后,

我尝试执行与mongoc 的 Windows 指南中类似的命令:

如果我只是

我收到一个错误

所以在这里我尝试了不同的东西,比如将路径添加到 libsson 目录:

这实际上有效,但是当我尝试构建时

我收到一个错误:

这个文件“bson.h”似乎驻留在目录中

但我不确定它为什么找不到该文件或我如何才能找到它。

非常感谢您对此的任何意见。

0 投票
1 回答
405 浏览

c++ - MONGODB C++ DRIVER mongocxx 和 legacy 的区别

在MongoDB的官方手册上,有两个驱动:mongocxx 3.0.x 和 legacy 1.1.x 我很困惑选择哪个版本,它们有什么区别。

提前感谢任何人可以帮助我!

0 投票
1 回答
565 浏览

c++ - mongo-cxx-driver 库构建但持久的链接和调试问题

我正在尝试构建 mongo-cxx-driver 以在带有 Visual Studio 2015 的 Windows 10 上与 Cinder 一起使用。Cinder 使用 Boost 1.58,因此我针对他们包含的 Boost 版本构建了驱动程序。

我尝试完全按照 github 上的说明进行操作,但是我得到的最终库和 dll 似乎与它们有问题。我很想帮助调试我的编译出错的地方!

这就是我所做的,在此处镜像官方说明

步骤1

我按照此处的说明安装了 MongoDB C 驱动程序。只需在 Windows 构建说明下复制/粘贴 CMake 调用即可完美运行。

第2步

由于我使用的是 Windows 和 Visual Studio 2015,因此我应该为 Polyfill 使用 Boost 选项。

第 3 步

我解压了从 github 下载的 mongo-cxx-driver-3.0.2;然后我进入mongo-cxx-driver-r3.0.2\mongo-cxx-driver-r3.0.2并运行 CMake:

cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=C:\mongo-cxx-driver -DLIBBSON_DIR=C:\mongo-c-driver -DBoost_INCLUDE_DIR=C:\Cinder\include\ -DLIBMONGOC_DIR=C:\mongo-c-driver -DBSONCXX_POLY_USE_BOOST=1 ..

然后构建并安装项目:

一切运行良好,我从 CMake 确认没有错误。万岁!

问题

在测试时,我尝试运行测试程序

如果我在 Debug 中运行它,那么它会在打印出带有“Debug Assertion Failed”消息的数据库后崩溃:

检查断点表明它会导致文件末尾的行出现错误——可能是在从行清理期间

我的第一个怀疑是 .lib 文件和 .dll 可能是为发布而构建的——所以我在发布时构建了它。

mongo_test.exe has triggered a breakpointbsoncxx.dll!bsoncxx::v_noabi::string::view_or_value::terminated().

在尝试调试时,我将插入行更改为:

为了收集更多的调试信息。我惊讶地发现编译时不会出现 C2440 错误:

我怀疑问题可能出在我如何链接 Boost / std::experimental 上,但我尝试了几种不同的变体(禁用使用 boost 并使用 std::experimental 代替 polyfill),但这并没有似乎创建了一个工作库。或者可能与 Debug / Release 或 x64 与 x86 不匹配?

任何人都可以识别此构建过程中的失误吗?

谢谢!

[编辑] 运行 mongo-cxx-driver 中包含的测试,包括此处用于调试目的的输出:

0 投票
1 回答
2442 浏览

c++ - 如何在 Visual Studio 中使用 mongodb-cxx-driver 设置项目

我已经使用 Visual Studio 在 Windows 上成功构建了新的 libmongo-cxx-driver,但我无法理解如何在 VS 2015 中设置一个项目以链接到它。我将不胜感激。

0 投票
1 回答
369 浏览

c++ - 未知错误代码 bsoncxx::oid

我有一个使用 mongocxx 驱动程序制作 oid 的相对简单的示例。如下:

但是我不断收到:未知的 bsoncxx 错误代码

我不知道我做错了什么。

0 投票
1 回答
432 浏览

mongodb - 插入对象内的集合时,Mongodb c ++崩溃

我正在使用 mongocxx 驱动程序,并且正在尝试对集合进行基本插入。

如果我只是按照此处介绍的指南进行操作,它就可以正常工作。

但是,如果我将 db 和 collection 实例放在对象中,则插入在运行时会崩溃。因此,举个简单的例子,我有一个包含数据库和集合实例的结构,并在 main() 中创建 Thing 的实例后尝试通过这些实例进行插入:

我意识到这可以通过在 main 中启动数据库和集合并在 Thing 中仅存储指向集合的指针来解决。但是,我想知道崩溃的原因,以及是否可以将 db 集合实例放在对象中。

0 投票
1 回答
3150 浏览

c++ - 将 JSON 插入 Mongocxx

我目前正在尝试将 JSON 文件插入到我的 mongoDB 中。我已经看到过去通过使用 mongo::BSONObj 解决了这个问题......但这似乎不是一个选项,因为他们发布了用于 c++11 的新 mongocxx 驱动程序。这是我在 bsoncxx src 文件中找到的:

如何将我的 JSON 文件放入stdx::string_view?

谢谢!

0 投票
0 回答
4767 浏览

c++ - Mongocxx 驱动示例编译问题

我已经在 Ubuntu 14.04 上按照此处的说明安装了 mongocxx

/usr/local/liblibbsoncxx.solibmongoc-1.0.so并且libmongocxx.so

我正在使用 cmake 编译说明中的简单示例

甚至(因为是cmake的新手)

例子是:

我收到此错误...我无法解决

任何想法 - 我似乎无法链接 mongocxx 驱动程序?

编辑

按照此处的说明进行操作

第 1 步:安装 Mongoc 驱动程序

第 2 步:构建 Mongcxx 驱动程序

第 3 步:构建并安装驱动程序