Mongodb
杂谈
db存放再内存中,有集合时候自动持久话到磁盘上
创建
use 数据库
数据库名规则
- 不能是空字符串
- 不能含有空格、.、$、/、\、\0(空字符)
- 全部小写
- 最多64字节
show dbs
- admin “root”库,用户自动继承所有权限
- local 数据永远不会复制
- config 用于分片设置
集合创建
显式
db.createcollection(集合名)
隐式
插入文档即可,若不存在,创建集合
查看创建
show collections
删除
db.集合名.drop
文档新增
单个插入
db.集合名.insert({})
insert 与save等价
多个插入
db.集合名.insertMany([{},{},{}])
可以采用try{}catch(e){}包裹
文档查询
简单查询
db.集合名.find() //查找全部
db,集合名.find({}) //按照Bson搜索
db.集合名。findOne() //返回第一条
投影查询
db.集合名.find({条件},{字段:1,_id:0}) // 1:展示,0不展示
正则查询
db.集合名.find({field:/value/}) // 包含值的所有文档
db.集合名.find({field:/^value/}) //以该值开头的集合
比较查询
db.集合名.find({"field":{$gt:value}});
包含查询
db.集合名.find({"field":{$in:[]}})
db.集合名.find({"field":{$nin:[]}})
and查询
db.集合名.find({$and:[{},{}]})
or查询
将and转成or即可
涵盖查询
投影查询只包含索引字段直接从索引返回结果
分页查询
统计
db.集合.count(query,option)
分页
db.集合.find().limit(num),skip(num) // limit:返回条数 skip:跳过条数
排序
db.集合.find().sort({})
- field:1 升序
- field:-1 降序
文档更新
db.集合.update(query,update,optioons)
覆盖更新
db.集合.update({},{filed:value})
局部更新
db.集合.update({},{$set:{field:value}})
默认第一条记录
批量更新
db.集合.update({},{$set:{field:value}},{multi:true})
列值增长的修改
db.集合.update({},{$inc:{field:NumberInt(1)}})
文档删除
db.集合.remove({}) // 无条件(全部删除)
索引
- 单字段索引
- 复合索引
索引创建
db.集合.createIndex(keys,option)
unique 唯一
name 自定义索引名称
索引查看
db.集合.getIndexes()
索引移除
db.集合.dropIndex(index)
db.集合.dropIndexes()
执行计划
db.集合.find().explain(options)
winning plan
stage:'collscan' // 全局扫描
stage:'fetch' // 抓取方式