MongoDB使用

本文使用Docker安装MongoDB,首先安装Dokcer

适合操作系统: ubuntu18

Docker安装

# 卸载旧版本
sudo apt-get purge docker-ce
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo rm -rf /var/lib/docker
# 安装curl工具
sudo apt-get install curl -y
# 使用官方安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 使得当前账户也能使用docker命令,若生效,可能需要重新登录或重启虚拟机
sudo usermod -aG docker ${USER}

若使用ubuntu18,可使用以下命令安装,docker的版本也是比较新的。

sudo apt-get update
# 卸载旧版本
sudo apt-get purge docker-ce
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo rm -rf /var/lib/docker
# 安装docker
sudo apt install docker.io -y
# 使得当前账户也能使用docker命令,若生效,需要重新登录
sudo usermod -aG docker ${USER}

MongoDB安装

# 拉取官方镜像
sudo docker pull mongo
# 创建docker db挂载目录
mkdir /home/${USER}/docker/db/mongodb
# 运行刚刚拉取的镜像mongo,容器名:mongodb
docker run -p 27017:27017 -v /home/${USER}/docker/db/mongodb:/data/db --restart=always --name=mongodb -d mongo

MongoDB创建账户

# 进入docker mongodb终端
docker exec -it mongodb bash
# 弹出root@966de5e17b68:/#,输入mongo 
mongo
# 在数据库admin下创建超级用户admin
use admin
db.createUser({
   user:"admin", pwd:"admin", roles: [{
   role : "userAdminAnyDatabase", db:"admin"}]})
db.auth("admin","admin")
# 切换至数据库iot
use iot
# 为数据库iot创建用户iotcloud
db.createUser({
   user:"iotcloud",pwd:"iotcloud",roles:[{
   role:"readWrite",db:"iot"}]})

MongoDB索引管理

随着业务的发展,可能有些索引不再需要,或者需要新建索引。

以数据库iot中的集合dev_msg_log为例:

# 进入docker mongodb终端
docker exec -it mongodb bash
# 弹出root@966de5e17b68:/#,输入mongo 
mongo
use iot

# 查看所有的索引
db.dev_msg_log.getIndexes();

# 查看所有索引的大小,单位是字节
db.dev_msg_log.totalIndexSize()

# 根据索引name,删除指定的索引,比如删除name为“testidx”的索引
db.dev_msg_log.dropIndex("testidx");

# 创建新的索引,在后台根据字段attr1、attr2、attr3创建组合索引,索引名称“anotheridx”
db.dev_msg_log.ensureIndex({
   attr1:-1, attr2:-1, attr3:1},{
   name:"anotheridx", background:true})

查询分析

queryPlanner

查询分析可以帮助设计索引

db.body_sensor_log.find({
   "deviceId":"FF81BBDCB109FCE76B116779F2B5E425196801BF","uuid":"1F-FF-FF-FF-FF-FF","attr":0}).sort({
   "createTime":-1}).limit(1).explain();

得到如下结果:

{
   
    "queryPlanner": {
   
        "plannerVersion": 1,
        "namespace": "iot.body_sensor_log",
        "indexFilterSet": false,
        "parsedQuery": {
   
            "$and": [
                {
   
                    "attr": {
   
                        "$eq": 0
                    }
                },
                {
   
                    "deviceId": {
   
                        "$eq": "FF81BBDCB109FCE76B116779F2B5E425196801BF"
                    }
                },
                {
   
                    "uuid": {
   
                        "$eq": "1F-FF-FF-FF-FF-FF"
                    }
                }
            ]
        },
        "queryHash": "B9F93D3B",
        "planCacheKey": 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值