1. 环境
- cat /etc/issue : Ubuntu 16.04.6 LTS
- uname -r : 4.15.0-51-generic
- lsb_release -dc:
- Description: Ubuntu 16.04.6 LTS
- Codename: xenial
2. 前提
- 查看当前环境是否已经安装MongoDB:
apt list --installed | grep mongodb
sudo apt-get install build-essential cmake automake autoconf libtool git pkg-config -y
3. 安装MongoDB
- 导入public key:Ubuntu包管理工具(比如,dpkg、apt)要求包发布商使用GPG密钥(GPG key)来对发布的包进行签名,以此来确保包的一致性和真实性。在Ubuntu中可以通过以下命令来添加MongoDB的GPG 密钥:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
- 为MongoDB创建一个列表文件(list file):可以通过如下命令来创建文件*/etc/apt/sources.list.d/mongodb-org-4.0.list*:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
- 重新加载本地包数据库:
sudo apt-get update
- 安装MongoDB包
- 安装最新的稳定版本:
sudo apt-get install -y mongodb-org
- 安装指定版本(如,版本4.0.10):
sudo apt-get install -y mongodb-org=4.0.10 mongodb-org-server=4.0.10 mongodb-org-shell=4.0.10 mongodb-org-mongos=4.0.10 mongodb-org-tools=4.0.10
- 安装最新的稳定版本:
4. 运行MongoDB
- 启动MongoDB服务mongodb:
sudo service mongod start
- 确保MongoDB成功启动:检查日志文件
/var/log/mongodb/mongod.log
是否有内容:[initandlisten] waiting for connections on port 27017
- 关闭MongoDB服务mongodb:
sudo service mongod stop
- 重启MongoDB服务mongodb:
sudo service mongod restart
- 使用mongo shell连接到MongoDB服务:
mongo
- 退出mongo shell:exit
5. 卸载MongoDB
- 暂停mongodb进程:
sudo service mongod stop
- 移除MongoDB所有包:
sudo apt-get purge mongodb-org*
- 移除MongoDB所有数据目录:
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
6. MongoDB注意
- 通过包管理器(如Ubuntu的apt、dpkg)安装MongoDB,数据目录为:
/var/lib/mongodb
,日志目录为:/var/log/mongodb
,配置文件放置为:/etc/mongod.conf
- 默认情况下,MongoDB使用以
linux用户
***mongodb*运行,如果不是以mongodb身份运行,必须确保当前linux用户
必须有访问数据数据目录和日志目录的权限 - MongoDB默认的端口号为***27017***
- MongoDB包结构
- mongodb-org:元数据包(metapackage),自动包含了以下所列的4个组件包
- mongodb-org-server:包含了***mongod***守护进程,以及与之关联的初始化脚本和一个配置文件***/etc/mongod.conf***
- mongodb-org-mongos:包含了***mongos***守护进程
- mongodb-org-shell:包含了***mongo*** shell程序
- mongodb-org-tools:包含了工具:mongoimport、bsondump、mongodump、mongoexport、mongofiles、mongorestore、mongostat***和***mongotop
7. 安装MongoDB C++ Driver
-
安装MongoDB C driver
- sudo mkdir mybuild
- cd mybuild && cmake …
- sudo make && sudo make install
- 注意
-
安装MongoDB C++ driver
-
cd build
-
cmake … -DCMAKE_INSTALL_PREFIX=/usr/local
-DCMAKE_INSTALL_PREFIX=/usr/local
:指定将要安装MongoDB C++驱动的路径,如果不指定,将默认安装在mongo-cxx-driver-rxxx/build/install
路径下,将会导致找不到相应的头文件和库而无法编译
-
注意
- 要先安装 MongoDB C Driver
- 网址:https://github.com/mongodb/mongo-cxx-driver/releases
-
-
查看驱动是否安装成功
-
测试代码:
#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; } }
-
编译:
c++ --std=c++11 test.cpp -o test $(pkg-config --cflags --libs libmongocxx)
-
运行:
./test
-
运行结果为:
{ "_id" : { "$oid" : "5d0ad853910b1d520b614062" }, "hello" : "world" }
-
8. 参考
- Install MongoDB Community Edition on Debian: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/
- Debian/Ubuntu手动编译安装MongoDB C++11驱动及驱动测试:https://www.cnblogs.com/pluse/p/5491300.html