Ubuntu下安装MongoDB及其C++驱动

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. 前提

  1. 查看当前环境是否已经安装MongoDB: apt list --installed | grep mongodb
  2. sudo apt-get install build-essential cmake automake autoconf libtool git pkg-config -y

3. 安装MongoDB

  1. 导入public key:Ubuntu包管理工具(比如,dpkg、apt)要求包发布商使用GPG密钥(GPG key)来对发布的包进行签名,以此来确保包的一致性和真实性。在Ubuntu中可以通过以下命令来添加MongoDB的GPG 密钥:sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
  2. 为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
  3. 重新加载本地包数据库:sudo apt-get update
  4. 安装MongoDB包
    1. 安装最新的稳定版本:sudo apt-get install -y mongodb-org
    2. 安装指定版本(如,版本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

  1. 启动MongoDB服务mongodbsudo service mongod start
  2. 确保MongoDB成功启动:检查日志文件/var/log/mongodb/mongod.log是否有内容:[initandlisten] waiting for connections on port 27017
  3. 关闭MongoDB服务mongodbsudo service mongod stop
  4. 重启MongoDB服务mongodbsudo service mongod restart
  5. 使用mongo shell连接到MongoDB服务:mongo
    1. 退出mongo shell:exit

5. 卸载MongoDB

  1. 暂停mongodb进程:sudo service mongod stop
  2. 移除MongoDB所有包:sudo apt-get purge mongodb-org*
  3. 移除MongoDB所有数据目录:
    1. sudo rm -r /var/log/mongodb
    2. sudo rm -r /var/lib/mongodb

6. MongoDB注意

  1. 通过包管理器(如Ubuntu的apt、dpkg)安装MongoDB,数据目录为:/var/lib/mongodb,日志目录为:/var/log/mongodb配置文件放置为:/etc/mongod.conf
  2. 默认情况下,MongoDB使用以linux用户***mongodb*运行,如果不是以mongodb身份运行,必须确保当前linux用户必须有访问数据数据目录日志目录的权限
  3. MongoDB默认的端口号为***27017***
  4. MongoDB包结构
    1. mongodb-org:元数据包(metapackage),自动包含了以下所列的4个组件包
    2. mongodb-org-server:包含了***mongod***守护进程,以及与之关联的初始化脚本和一个配置文件***/etc/mongod.conf***
    3. mongodb-org-mongos:包含了***mongos***守护进程
    4. mongodb-org-shell:包含了***mongo*** shell程序
    5. mongodb-org-tools:包含了工具:mongoimportbsondumpmongodumpmongoexportmongofilesmongorestoremongostat***和***mongotop

7. 安装MongoDB C++ Driver

  1. 安装MongoDB C driver

    1. sudo mkdir mybuild
    2. cd mybuild && cmake …
    3. sudo make && sudo make install
    4. 注意
      1. 依赖于***Libbson***:https://github.com/mongodb/libbson/releases
      2. 网址:https://github.com/mongodb/mongo-c-driver/releases
  2. 安装MongoDB C++ driver

    1. cd build

    2. cmake … -DCMAKE_INSTALL_PREFIX=/usr/local

      1. -DCMAKE_INSTALL_PREFIX=/usr/local:指定将要安装MongoDB C++驱动的路径,如果不指定,将默认安装在 mongo-cxx-driver-rxxx/build/install 路径下,将会导致找不到相应的头文件和库而无法编译
    3. 注意

      1. 要先安装 MongoDB C Driver
      2. 网址:https://github.com/mongodb/mongo-cxx-driver/releases
  3. 查看驱动是否安装成功

    1. 测试代码:

      #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;
          }
      }
      
    2. 编译:c++ --std=c++11 test.cpp -o test $(pkg-config --cflags --libs libmongocxx)

    3. 运行:./test

    4. 运行结果为:{ "_id" : { "$oid" : "5d0ad853910b1d520b614062" }, "hello" : "world" }

8. 参考

  1. Install MongoDB Community Edition on Debian: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/
  2. Debian/Ubuntu手动编译安装MongoDB C++11驱动及驱动测试:https://www.cnblogs.com/pluse/p/5491300.html
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值