MongoDb基础知识点整理
- 可视化图形界面 compass
- 应用场景
- 针对三高请求
- High performance 对数据库高并发的读写需求
- High Storage 高效率的访问和读取
- 对数据库的高扩展性和高可用性
- 具体应用场景
- 社交场景。利用MongoDB存储用户信息,以及用户发表的朋友圈
- 游戏场景
- 物流场景
- 物联网场景
- 视频直播
- 针对三高请求
- MongoDB术语/概念
- database 数据库
- collection 数据库表/集合
- document 数据记录行/文档
- field 数据字段/域
- index 索引
- 嵌入文档 MongoDB通过嵌入式文档来替代多表连接
- primary key 主键MongoDB自动将_id 字段设置为主键
MongoDb linux 安装
- 下载linux安装包(ps:MongoDB的版本号命名规则:大版本号.中版本号.小版本号,当中版本号为奇数时,指的是开发版本,当中版本号为偶数时,指的是稳定版本,所以尽量找奇数版本下载)
- 解压
tar zxvf mongodb-linux-x86_64-rhel70-4.2.5.tgz
- 移动目录
mv mongodb-linux-x86_64-rhel70-4.2.5 /usr/local/mongodb
- 创建数据存储目录 和 日志目录
mkdir -p /mongodb/single/data/db mkdir -p /mongodb/single/logs
- 创建并修改配置文件
vim /mongodb/single/mongodb.conf
- 配置文件如下
systemLog: destination: file path: "/mongodb/single/logs/mongod.log" logAppend: true storage: # 启用或禁用持久性日志,保证可恢复 dbPath: "/mongodb/single/data/db" journal: enabled: true processManagement: # 启用后台守护进程 fork: true net: # 第二个指的是局域网 bindIp: 127.0.0.1,172.16.146.100 port: 27017 setParameter: enableLocalhostAuthBypass: false
- 启动服务
/usr/local/mongodb/bin/mongod -f /mongodb/single/mongodb.conf
- 注意事项
- 校验远程连接,如果远程连接未能相应连接,请检查防火墙,具体命令如下
如果是running状态,请关闭防火墙,或者开放特定端口systemctl status firewalld
关闭防火墙的命令如下systemctl stop firewalld
- 服务器器是阿里云的,请注意开放阿里云自己的安全策略
mongoDb常用的操作命令
- 数据库操作
- 数据库展示
show dbs
- 数据库创建或者转换
use test
- 展示当前数据库
db
- 删除数据库
db.dropDatabase()
- 数据库展示
- 集合操作
- 创建集合
db.createCollection("test")
- 删除集合
db.test.drop()
- 展示集合
show collections
- 创建集合
- 文档基本的CRUD
- 插入
db.test.insert(Bson) db.test.insertMany(BSon集合) # 批量插入的时候使用try catch try { db.test.insertMany(BSon集合); }catch(e){ print(e) }
- 删除
# 删除全部数据 db.test.remove({}); # 删除部分数据 db.test.remove();
- 更新
db.test.update(query,update,options); #覆盖修改 会把之前的所有数据都覆盖 db.test.update({_id:"1"},{name:"111"}); #局部修改,只修改部分数据 db.test.update({_id:"1"},{$set:{name:"111"}}); #批量修改 不加参数只会修改第一条 db.test.update({userId:"1"},{$set:{name:"111"}},{multi:true}); #自增长 db.test.update({userId:"1"},{$inc:{name:NumberInt(1)}});
- 查询
db.test.find() db.test.find({}) db.test.findOne({}) db.test.find({name:"123"},{name:1})