MongoDB介紹、安裝及mongocxx C++驅動程式的安裝
MongoDB介紹
MongoDB 是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。
MongoDB 是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。他支援的資料結構非常鬆散,是類似json的bson格式,因此可以儲存比較複雜的資料型別。Mongo最大的特點是他支援的查詢語言非常強大,其語法有點類似於面向物件的查詢語言,幾乎可以實現類似關係資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。
特點:
- 面向集合
- 模式自由
- 檔案儲存格式為BSON(一種JSON的擴充套件)
- 支援動態查詢
- 支援完全索引
centos7 下安裝
tar -zxvf mongodb-linux-x86_64-rhel70-3.4.10.tgz -C /home/oracle/app
mv mongodb-linux-x86_64-rhel70-3.4.10 mongodb
cd mongodb
mkdir db
mkdir logs
cd bin
//增加配置檔案
vi mongodb.conf
dbpath=/home/oracle/app/mongodb/db/
logpath=/home/oracle/app/mongodb/logs/mongodb.log
port=27017
fork=true
nohttpinterface= true
mongodb啟動
./mongodb/bin/mongod –config /home/oracle/app/mongodb/bin/mongodb.conf
./mongodb/bin/mongo
//設定mongod開機自啟動
vi /etc/rc.d/rc.local
/home/oracle/app/mongodb/bin/mongod –config /home/oracle/app/mongodb/bin/mongodb.conf
C++驅動安裝
準備工作
- 任何標準的Unix平臺,或Windows 7 SP1 +
- 一個支援C ++ 11(gcc,clang或Visual Studio)的編譯器
- CMake 3.2或更高版本
第1步:安裝最新版本的MongoDB C驅動程式
$ sudo yum install pkg-config openssl-devel cyrus-sasl-devel
$ wget https://github.com/mongodb/mongo-c-driver/releases/download/1.8.1/mongo-c-driver-1.8.1.tar.gz
$ tar xzf mongo-c-driver-1.8.1.tar.gz
$ cd mongo-c-driver-1.8.1
$ ./configure --disable-automatic-init-and-cleanup
$ make
$ sudo make install
第2步:選擇一個C ++ 17 polyfill
安裝mongocxx driver 需要有具有C++17特性的以下介面:
- MNMLSTC/core(預設非windows系統使用):需安裝git、cmake等等等。。。後通過第4步安裝
- Boost(預設windows系統使用,如果用msvc這是唯一選擇)
步驟3:下載最新版本的mongocxx驅動程式。
curl -OL https://github.com/mongodb/mongo-cxx-driver/archive/r3.1.3.tar.gz
tar -xzf r3.1.3.tar.gz
cd mongo-cxx-driver-r3.1.3/build
步驟4:配置驅動程式(這裡的坑太多,依賴太多一個個裝吧)
cd mongo-cxx-driver-r3.1.3/build
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig cmake -DBSONCXX_POLY_USE_MNMLSTC=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
Checking for module ‘libbson-1.0>=1.5.0’
預設繫結安裝的libbson版本低
需先安裝新版本libbson-1.8.1
wget https://github.com/mongodb/libbson/releases/download/1.8.1/libbson-1.8.1.tar.gz
tar -zxvf libbson-1.8.1.tar.gz
cd libbson-1.8.1/
./configure
make
sudo make install
autoconf與automake的安裝(也許不要)
wget http://mirrors.kernel.org/gnu/autoconf/autoconf-2.69.tar.gz
tar -zxvf autoconf-2.69.tar.gz
cd autoconf-2.69/
./configure
make
sudo make install
wget http://ftp.gnu.org/gnu/automake/automake-1.15.1.tar.gz
tar -zxvf automake-1.15.1.tar.gz
cd automake-1.15.1/
./configure
make
sudo make install
m4與libtool的安裝(也許不要)
sudo yum install m4
sudo yum install libtool
第5步:構建並安裝驅動程式
cd mongo-cxx-driver-r3.1.3/build
sudo make EP_mnmlstc_core
make && sudo make install
第6步:測試您的安裝
將以下原始檔的檔名儲存test.cpp 在任何目錄下:
#include <iostream>
#include <bsoncxx/builder/stream/document.hpp>
#include <bsoncxx/json.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
int main(int, char**) {
mongocxx::instance inst{};
mongocxx::client conn{mongocxx::uri{}};
bsoncxx::builder::stream::document document{};
auto collection = conn["testdb"]["testcollection"];
document << "hello" << "world";
collection.insert_one(document.view());
auto cursor = collection.find({});
for (auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
}
在pkg-config的幫助下編譯
先設定PKG_CONFIG_PATH環境變數:在.bash_profile中配置環境變數
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
使用以下命令編譯上面的測試程式:
c++ --std=c++11 test.cpp -o test $(pkg-config --cflags --libs libmongocxx)
成功生成test執行程式後執行./test報錯
error while loading shared libraries: libmongocxx.so._noabi
解決方法:http://blog.chinaunix.net/uid-26212859-id-3256667.html
# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
#su #切換到root使用者
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig
再次執行./test成功
程式建立testdb資料庫及testcollection集合,輸出如下:
{ "_id" : { "$oid" : "5a0c27a6e138232bc80c1852" }, "hello" : "world" }
MongoDB圖形化介面Robo 3T(Robomongo)安裝
wget https://download.robomongo.org/1.1.1/linux/robo3t-1.1.1-linux-x86_64-c93c6b0.tar.gz
tar -zxvf robo3t-1.1.1-linux-x86_64-c93c6b0.tar.gz
cd robo3t-1.1.1-linux-x86_64-c93c6b0/
./bin/robo3t
啟動報錯:./robo3t: /lib64/libc.so.6: version `GLIBC_2.18’ not found
wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxf glibc-2.18.tar.gz
cd glibc-2.18/
mkdir build
cd build/
../configure --prefix=/usr #注意了,別修改路徑
make -j2
sudo make install