1. 程式人生 > >MongoDB介紹、安裝及mongocxx C++驅動程式的安裝

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