mongodb基础操作

创建数据库

bash 复制代码
use admin

授权

bash 复制代码
db.auth("admin","123456")

创建用户

bash 复制代码
db.createUser({
user: "xxx",
pwd: "xxxxxx",
roles: [
{ role: "readWrite", db: "iot" }
]
})

查询数据库大小

bash 复制代码
show dbs;

查询结果数量

bash 复制代码
db.mon.find().count()

删除数据库

bash 复制代码
db.dropdatabase()

查询一条,查看表结构

bash 复制代码
#查询表结构,其中mon为 colnettions名称
db.mon.findone()

查询数据

bash 复制代码
#查找数据,其中skip表示第几条开始,limit表示查看指定数量的结果
db.mon.find().skip(2).limit(4)

创建集合

bash 复制代码
#创建集合
iiot> db.createCollection("mon")
{ ok: 1 }

删除集合

bash 复制代码
#删除集合
iiot> db.mon.drop()
true

插入数据

bash 复制代码
#插入数据
db.mon.insert({"name":"张三","age":"18"})
db.mon.insert({"name":"李四","age":"19"})
db.mon.insert({"name":"王五","age":"20"})

查询数据库数据

bash 复制代码
#查询所有数据,等同于select * from mon;
iiot> db.mon.find() 
[
  { _id: ObjectId('673d4613a40aa131622202d8'), name: '张三', age: '18' },
  { _id: ObjectId('673d466aa40aa131622202d9'), name: '李四', age: '19' },
  { _id: ObjectId('673d466ca40aa131622202da'), name: '王五', age: '20' }
]

根据条件查询数据

bash 复制代码
#查询单条数据,等同于select * from mon where age = 19;
iiot> db.mon.find({"age" : "19"})
[
  { _id: ObjectId('673d466aa40aa131622202d9'), name: '李四', age: '19' }
]

根据条件范围查询数据

bash 复制代码
#查询单条数据,等同于select * from mon where age < 20;
iiot> db.mon.find({"age":{"$lt":"20"}})
[
  { _id: ObjectId('673d4613a40aa131622202d8'), name: '张三', age: '18' },
  { _id: ObjectId('673d466aa40aa131622202d9'), name: '李四', age: '19' }
]

删除数据

bash 复制代码
#删除单条第一个匹配到的文档数据
iiot> db.mon.deleteOne({"age":"18"})
{ acknowledged: true, deletedCount: 1 }

#删除多条匹配到的文档数据
iiot> db.mon.deleteMany({"age":"18"})
{ acknowledged: true, deletedCount: 2 }

#删除集合中文档数据
iiot> db.mon.remove({})
{ acknowledged: true, deletedCount: 9613647 }

#删除集合及所有文档数据
iiot> db.mon.drop({})

索引操作

bash 复制代码
#查看索引的大小
iiot> db.mon.totalIndexSize()
378810368

#创建索引
db.mon.createIndex({"expireAt":-1},{expireAfterSeconds:30});
db.mon.createIndex({deviceCode:1});

#删除索引
iot> db.mon.dropIndexes()
{
  nIndexesWas: 4,
  msg: 'non-_id indexes dropped for collection',
  ok: 1
}

备份数据库

bash 复制代码
#mongodump是MongoDB官方提供的备份工具,它可以从MongoDB数据库读取数据,并生成BSON文件,mongodump适合用于备份和恢复数#据量较小的MongoDB数据库, 不适用于大数据量备份
#默认情况下mongodump不获取local数据库里面的内容。mongodump仅备份数据库中的文档,不备份索引,所以我们还原后,需要重新生成索引。 mongodump备份过程中会对mongod服务的性能产生影响,我们建议在业务低峰期进行操作。如果我们备份的数据,大于系统内存,我们备份的时候容易出现错误
mongodump --host 127.0.0.1 -d iot -uxxx -pxxxxxx -o /backup --gzip
mongodump -d iot -uxxx -pxxxxxx -o /backup --gzip

/dump/iot/xxx_logs.bson  
/dump/iot/xxx_logs.metadata.json  
#拷贝
xxx_logs.bson和xxx_logs.metadata.json 至还原服务器
/dump/iot/iot.bson  
/dump/iot/iot.metadata.json

#说明
--host:指定ip和端口
-u:用户
-p:密码
-c: 指定集合名称
-d:指定备份的库名
-o: 备份输出到哪个目录
--gzip:从压缩文件中进行恢复
--drop:恢复数据之前删除原来数据库数据,避免数据重复

还原数据库

bash 复制代码
#还原数据库,仅使用bson.gz即可,删除原索引
mongorestore --host 127.0.0.1:27017 -uxxx -pxxxxxx -d xxx -c xxx /backup/iot/xxx.bson.gz --gzip --drop
#说明
--host:指定ip和端口
-u:用户
-p:密码
-d:指定恢复的库名
--dir: 指定恢复目录
--gzip:压缩备份文件
相关推荐
廋到被风吹走4 小时前
【数据库】【MySQL】InnoDB外键解析:约束机制、性能影响与最佳实践
android·数据库·mysql
掘根4 小时前
【消息队列】交换机数据管理实现
网络·数据库
Logic1014 小时前
《Mysql数据库应用》 第2版 郭文明 实验6 数据库系统维护核心操作与思路解析
数据库·sql·mysql·学习笔记·计算机网络技术·形考作业·国家开放大学
AI Echoes5 小时前
构建一个LangChain RAG应用
数据库·python·langchain·prompt·agent
@nengdoudou6 小时前
KingbaseES支持 mysql 的find_in_set函数
数据库·mysql
摇滚侠6 小时前
面试实战 问题三十三 Spring 事务常用注解
数据库·spring·面试
梁萌6 小时前
保姆级的MySQL执行计划(Explain)解读
数据库·mysql·explain·执行计划
JIngJaneIL6 小时前
基于Java+ vue智慧医药系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
+VX:Fegn08956 小时前
计算机毕业设计|基于springboot + vue图书管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
杨云龙UP7 小时前
MySQL 8.0.x InnoDB 写入链路优化:Redo Log 与 Buffer Pool 扩容与缓冲区调优实战记录-20251029
linux·运维·数据库·sql·mysql