提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
一、mongodb与架构
什么时候考虑mongodb:
1.数据量预计达到10亿
2.高qps
二、mongodb的隔离级别
majority:大多数确认,就返回
snapshot:读取最近快照,一般用他替代linearizable,保证在分布式多线程情况下不出现脏读、幻读、不可重复读
linearizable:线性的执行,开启后会单线程的执行
三、writeConcern和readConcern
writeConcern:写到几个节点后才算成功,值有0、1-n、majority,一般设置majority
readConcern:available所有可用的数据、local所有可用且属于当前分片的数据、majority大多数节点已提交、linearizable线性化读取文档、sanpshot最近快照的数据。
四、命令
powershell
# 查看所有数据库
show databases
# 选择数据库(如果数据库不存在,不会报错;会隐式创建:当后期该数据库有数据时自动创建)
use 数据库名
# 删除数据库(先选中数据库)
db.dropDatabase()
# 查看所有集合
show collections
# 创建集合(插入数据会隐式创建)
db.createCollection('集合名')
# 删除集合
db.集合名.drop()
db.集合名.insert(json数据)
db.集合名.remove(条件 [,是否删除一条])
# 是否删除一条
- false删除多条,即全部删除(默认)
- true删除一条
db.集合名.update(条件, 新数据 [,是否新增, 是否修改多条])
# 新数据
- 默认是对原数据进行替换
- 若要进行修改,格式为 {修改器:{key:value}}
# 是否新增
- 条件匹配不到数据时是否插入: true插入,false不插入(默认)
# 是否修改多条
- 条件匹配成功的数据是否都修改: true都修改,false只修改一条(默认)
db.集合名.find(条件 [,查询的列])
db.集合名.find(条件 [,查询的列]).pretty() #格式化查看
# 条件
- 查询所有数据 {}或不写
- 查询指定要求数据 {key:value}或{key:{运算符:value}}
# 查询的列(可选参数)
- 不写则查询全部列
- {key:1} 只显示key列
- {key:0} 除了key列都显示
- 注意:_id列都会存在
五、索引
powershell
# 创建索引
db.集合名.createIndex(待创建索引的列:方式 [,额外选项])
# 创建复合索引
db.集合名.createIndex({key1:方式,key2:方式} [,额外选项])
# 参数说明:
- `待创建索引的列:方式`:{key:1}/{key:-1}
1表示升序,-1表示降序; 例如{age:1}表示创建age索引并按照升序方法排列
- `额外选项`:设置索引的名称或者唯一索引等
设置名称:{name:索引名}
唯一索引:{unique:列名}
总结
感觉不是很重要的一个数据库