问题标签 [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.
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 显示以下内容:
c++ - Mongo C++ 驱动程序能够绕过文档结构规则(关于不以 $ 开头的键的规则)
如果我尝试在 MongoDB 中插入一个以某个键开头的文档,$
则会收到一条错误消息:
(我有一个使用 Node.js 驱动程序的类似行为的观察者)
但是,运行以下 C++ 程序:
我可以插入它,如图find()
所示:
因此,C++ 驱动程序似乎能够“绕过” MongoDB 文档中描述的文档结构规则。这种行为有什么解释吗?它可能会以某种方式“破坏” MongoDB 数据库(我想这种限制是有充分理由的,并且数据库中的文档不尊重它可能是有问题的)
我观察到只有当密钥$
不在第一级时才会发生这种情况。例如,如果我使用
然后我得到一个一致的错误
以防万一,我使用的是 MongoDB 3.2.0 和旧版 C++ 驱动程序 1.0.7
c++ - 在 Windows 上构建 mongocxx 驱动程序时出错
我正在尝试遵循本指南,目前处于第 3 步。
所以跑完之后,
我尝试执行与mongoc 的 Windows 指南中类似的命令:
如果我只是
我收到一个错误
所以在这里我尝试了不同的东西,比如将路径添加到 libsson 目录:
这实际上有效,但是当我尝试构建时
我收到一个错误:
这个文件“bson.h”似乎驻留在目录中
但我不确定它为什么找不到该文件或我如何才能找到它。
非常感谢您对此的任何意见。
c++ - MONGODB C++ DRIVER mongocxx 和 legacy 的区别
在MongoDB的官方手册上,有两个驱动:mongocxx 3.0.x 和 legacy 1.1.x 我很困惑选择哪个版本,它们有什么区别。
提前感谢任何人可以帮助我!
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 breakpoint
在bsoncxx.dll!bsoncxx::v_noabi::string::view_or_value::terminated()
.
在尝试调试时,我将插入行更改为:
为了收集更多的调试信息。我惊讶地发现编译时不会出现 C2440 错误:
我怀疑问题可能出在我如何链接 Boost / std::experimental 上,但我尝试了几种不同的变体(禁用使用 boost 并使用 std::experimental 代替 polyfill),但这并没有似乎创建了一个工作库。或者可能与 Debug / Release 或 x64 与 x86 不匹配?
任何人都可以识别此构建过程中的失误吗?
谢谢!
[编辑] 运行 mongo-cxx-driver 中包含的测试,包括此处用于调试目的的输出:
c++ - 如何在 Visual Studio 中使用 mongodb-cxx-driver 设置项目
我已经使用 Visual Studio 在 Windows 上成功构建了新的 libmongo-cxx-driver,但我无法理解如何在 VS 2015 中设置一个项目以链接到它。我将不胜感激。
c++ - 未知错误代码 bsoncxx::oid
我有一个使用 mongocxx 驱动程序制作 oid 的相对简单的示例。如下:
但是我不断收到:未知的 bsoncxx 错误代码
我不知道我做错了什么。
mongodb - 插入对象内的集合时,Mongodb c ++崩溃
我正在使用 mongocxx 驱动程序,并且正在尝试对集合进行基本插入。
如果我只是按照此处介绍的指南进行操作,它就可以正常工作。
但是,如果我将 db 和 collection 实例放在对象中,则插入在运行时会崩溃。因此,举个简单的例子,我有一个包含数据库和集合实例的结构,并在 main() 中创建 Thing 的实例后尝试通过这些实例进行插入:
我意识到这可以通过在 main 中启动数据库和集合并在 Thing 中仅存储指向集合的指针来解决。但是,我想知道崩溃的原因,以及是否可以将 db 集合实例放在对象中。
c++ - 将 JSON 插入 Mongocxx
我目前正在尝试将 JSON 文件插入到我的 mongoDB 中。我已经看到过去通过使用 mongo::BSONObj 解决了这个问题......但这似乎不是一个选项,因为他们发布了用于 c++11 的新 mongocxx 驱动程序。这是我在 bsoncxx src 文件中找到的:
如何将我的 JSON 文件放入stdx::string_view
?
谢谢!