一、 安裝環境和准備工作
- 1.安裝環境是win10,64位系統
- 2.電腦安裝的是visual studio 2017 Professional版本
- 3.請先在電腦上安裝cmake。地址:https://cmake.org/download/
- 4.請先完成mongo-c-driver的驅動安裝。具體安裝過程,請參考文檔《Mongo-c-driver驅動構建和安裝.docx》
- 5.請先安裝boost最新版本。地址:https://sourceforge.net/projects/boost/files/boost-binaries/1.72.0/
- 6.請在電腦上安裝git。地址:https://www.git-scm.com/download
二、 官方的安裝介紹
1. 官方文章1 http://mongoc.org/libmongoc/current/installing.html#
2. 官方文章2 http://mongocxx.org/mongocxx-v3/installation/
注意:請注意選擇的Mongo-cxx-drvier 版本
三、下載mongo-cxx-driver
1. 方法1:在release頁面找合適的release版本,並下載。
release版本頁面地址: https://github.com/mongodb/mongo-cxx-driver/releases
2. 方法2:在github找到mongo-cxx-driver的工程
github 的 mongo-cxx-driver工程地址:https://github.com/mongodb/mongo-cxx-driver
特別注意,不要直接下載master版本。
要點擊master,選擇一個release版本。這里,我們選擇的是V3.5的版本。然后下載下來。
備注:當前時間,2020年4月26日,最新版本的Mongo-cxx-driver是V3.5版本,它需要的Mongo-c-driver最低版本是V1.15。前面,我們已經完成了mongo-c-driver V1.15版本的構建和安裝。官方的參考鏈接里面,也特別提到了版本號的對應信息。(這些細節不注意,會出現很多奇怪錯誤)
四、 開始構建和安裝
以我們下載的 mongo-cxx-driver-releases-v3.5.zip 文件為例進行介紹:
1. 先解壓 mongo-cxx-driver-releases-v3.5.zip 文件夾
然后在解壓后的 mongo-cxx-driver-releases-v3.5 文件夾中,打開cmd窗口。(或者打開cmd窗口,進入mongo-cxx-driver-releases-v3.5目錄)
2. 對當前文件夾,執行git初始化命令(構建過程需要git下載一些東西,如果沒有這個步驟會報錯)
git init
3. 在mongo-cxx-driver-releases-v3.5中創建一個准備構建的文件夾:
mkdir cmake-build
4. 進入cmake-build文件夾
cd cmake-build
5. 配置驅動環境
cmake .. -G "Visual Studio 15 2017 Win64" "-DCMAKE_CXX_STANDARD=17" "-DCMAKE_BUILD_TYPE=Release" "-DBUILD_SHARED_AND_STATIC_LIBS=ON" -DCMAKE_CXX_FLAGS="/Zc:__cplusplus" "-DBOOST_ROOT=C:\local\boost_1_72_0" "-DCMAKE_PREFIX_PATH=C:\mongo-c-driver" "-DCMAKE_INSTALL_PREFIX=C:\mongo-cxx-driver" "-DBUILD_VERSION=1.0.2"
補充說明:
C:\local\boost_1_72_0 是你的boost庫安裝目錄(默認是這個目錄)
C:\mongo-c-driver 是你安裝的mongo-c-driver驅動目錄(默認也是這個目錄)
C:\mongo-cxx-driver 是你mongo-cxx-driver要安裝的目錄(不建議修改)
-DBUILD_VERSION=1.0.2 是一個版本號,沒有這個,構建的時候會有錯誤提示。這個可以隨意指定版本號。
6. 將msbuild.exe 配置到電腦的環境變量中
將msbuild.exe的路徑,追加到Path的環境變量后面。(如果不懂windows環境變量配置,請自行百度了解一下)。
在我的電腦上,msbuild.exe 在我的電腦是 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\amd64
7. 編譯和安裝驅動
msbuild.exe ALL_BUILD.vcxproj
msbuild.exe INSTALL.vcxproj
msbuild.exe generate_uninstall\uninstall.vcxproj
執行完第7步命令之后,在電腦的”C:\mongo-cxx-driver”目錄下面就會生成若干文件了。Mongon-cxx-driver驅動就安裝在這里。
在第7步,也可以用vs2017打開我們剛才構建的工程。右鍵選中ALL_BUILD,然后點擊生成。生成完成之后,右鍵選中 INSTALL,然后點擊生成。就安裝成功了。
恭喜你驅動安裝成功!!!!
如果安裝失敗了,請重新按照文檔講解來一步一步操作。
特別注意下載的工程的版本。
你也可以再回過頭看看官方介紹的安裝步驟,看看哪個地方疏漏了。
五、 跑一個案例
1. 創建工程:
用vs2017新建一個控制台應用程序,並把win32環境改為win64.
2. 設置屬性面板
2.1【c/c++】【常規】,在【附加包含目錄】,添加bsoncxx和mongocxx的頭文件:
C:\mongo-cxx-driver\include\mongocxx\v_noabi
C:\mongo-cxx-driver\include\bsoncxx\v_noabi
我們假設你的mongo-cxx-driver是安裝在了C:\mongo-cxx-driver 目錄下面。
2.2【鏈接器】【常規】,在【附加庫目錄】,添加庫文件目錄:
C:\mongo-cxx-driver\lib\bsoncxx.lib
C:\mongo-cxx-driver\lib\mongocxx.lib
2.3【鏈接器】【輸入】,在【附加依賴項】中,添加庫文件目錄:
C:\mongo-cxx-driver\lib\bsoncxx.lib
C:\mongo-cxx-driver\lib\mongocxx.lib
2.4【調試】,在【環境】中添加dll的路徑
PATH=C:/mongo-cxx-driver/bin;C:\mongo-c-driver\bin
要真正運行程序,還需要將dll放在可執行路徑中,這里我可以通過設置PATH,在工程中運行我們的程序。mongocxx需要mongoc的若干庫文件。
2.5預處理器
_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS
2.6語言環境設置為C++17
2.7示例代碼:
// FirstMongoCXXProject.cpp : 此文件包含 "main" 函數。程序執行將在此處開始並結束。 // #include <iostream> #include <sstream> #include <thread> #include <vector> #include <cstdint> #include <mongocxx/index_model.hpp> #include <bsoncxx/builder/stream/document.hpp> #include <bsoncxx/builder/stream/helpers.hpp> #include <bsoncxx/builder/basic/helpers.hpp> #include <mongocxx/client.hpp> #include <mongocxx/instance.hpp> using bsoncxx::builder::stream::close_array; using bsoncxx::builder::stream::close_document; using bsoncxx::builder::stream::document; using bsoncxx::builder::stream::finalize; using bsoncxx::builder::stream::open_array; using bsoncxx::builder::stream::open_document; int main(int, char**) { //===================example:插入一個Json mongocxx::instance instance{}; // This should be done only once. mongocxx::client client{ mongocxx::uri{} }; mongocxx::database db = client["mydb"]; mongocxx::collection coll = db["test"]; auto builder = bsoncxx::builder::stream::document{}; bsoncxx::document::value doc_value = builder << "name" << "MongoDB" << "type" << "database" << "count" << 1 << "versions" << bsoncxx::builder::stream::open_array << "v3.2" << "v3.0" << "v2.6" << close_array << "info" << bsoncxx::builder::stream::open_document << "x" << 203 << "y" << 102 << bsoncxx::builder::stream::close_document << bsoncxx::builder::stream::finalize; bsoncxx::document::view view = doc_value.view(); bsoncxx::document::element element = view["name"]; if (element.type() != bsoncxx::type::k_utf8) { // Error } std::string name = element.get_utf8().value.data(); //stdx::string_view 類型的 data()方法,可以轉為字符串指針 bsoncxx::stdx::optional<mongocxx::result::insert_one> result = coll.insert_one(view); }