sudo apt-get install mongodb
默认安装路径 : /var/lib/mongodb
命令集 : /usr/bin /usr/local/bin
PATH=$PATH:/opt/mongodb.../bin
mongodump -h 主机地址 -d 库名 -o 文件名
mongorestore -h 主机地址: 端口号 -d 库名 文件路径
mongod --port 8080 设置端口(默认27017)
quit() exit ctrl+c/z/d 退出mongo shell
mongostat 监测速度 (command 命令次数 flushes IO次数 vsize 虚拟内存)
mongotop 监测时长 ( ns 数据集合、 total 总时长、 read 读时长 、write 写时长)
db.createCollection(“集合名”) 创建集合
db.getCollection("集合名") 查询集合所在库
db.集合名.renameCollion("新集合名") 重命名集合
db.集合名.insert({name:"tom"..}) 插入文档
db.集合名.save({name:"tom",...}) 插入文档
db.集合名.insert([{}, {}...]) 插入多个文档
db.集合名.save([{} {}...]) 插入多个文档(加_id键会覆盖原文档)
db.集合名.findOne(查找条件,域) 只显示找到的第一条文档
db.集合名.distinct("集合名") 查看集合内某个域的取值范围
db.集合名.remove(query,justOne) 删除指定条件文档(默认false删除所有)
db.集合名.update(query, update,upert,multi) 修改文档
db.集合名.find().count() 计数统计查询结果文档的个数
db.集合名.find().pretty() 将查询结果格式化显示
db.集合名.find().limit(n) 显示查找结果的前n条结果
db.集合名.find().skip(n) 跳n过前条显示后面的结果
db.集合名.find().count() 计数统计查询结果文档的个数
db.集合名.find().sort({filed:1/-1,...}) 排序 1:升序, -1:降序,第项相同按照第项二排序
db.集合名.find({'域名.下标':内容{_id:0}) 操作组中的某一项
db.集合名.find({"外域名.内部文档域":内容}, {_id:0}) 操作内部文档(Object)的域
db.集合名.ensureIndex({域:1/-1}) 创建索引(1:正向索引 -1:反向)
db.集合名.getIndexes() 查看某个集合中的索引
db.集合名.ensureIndex({域:1/-1}},{name:'索引名'}) 自定义索引名称
db.集合名.dropIndex(({域:1/-1}) 删除索引
db.集合名.dropIndex("索引名") 删除索引
db.集合名.dropIndexes() 删除所有索引(默认_id索引无法删除)
db.集合名.ensureIndex({域名1:1/-1,域名2:1/-1}) 创建符合索引 更节省空间
db.集合名.find({'数组.下标':值},{_id:0}) 如果对数组创建索引 查找值也属于索引查找
db.集合名.ensureIndex({域:1/-1},{unique:true}) 创建唯一索引
db.集合名.ensureIndex({域:1/-1},{sparse:true}) 创建稀疏索引
db.createCollection('集合名',{capped:true,size:10000,max:3}) 创建固定集合
query内如果多个条件用逗号隔开默认就是and关系
$slic 取数组中部分显示,在域(field)中声明
$setOnInsert 第三个参数为true作为补充插入数据 否则无用
$min 设置域的值为上线 超过min修改为min
$max 设置域的值为下线 小于max修改为max
$position 指定插入位置(配合each使用)
$pop 弹出一项(1:弹出第一项 -1:最后一项)
$addToSet 向数组中添加一项(不允许重复)
ISODate("2018-01-01 12:12:12") 自定义时间
ISODate("20180101 12:12:12") 自定义时间
ISODate("20180101") 自定义时间
update: 将筛选的文档修改为什么内容需要配合修改操作符
upsert: bool值 默认false 如果query的文档不存在则不进行任何操作
设置为true 如果query和文档不存在 就根据query和update插入新文档
multi: bool值 默认false 如果query文档有多条则只修改第一条
使用索引可以方便我们进行快速查找,减少数据遍历次数,从而提高查找效率
此时索引表可以直接提供给用户想要的内容,提高查找效率
只针对有指定域的文档创建索引表,如果某个文档没有该域则不会插入到索引表中
1. 数据量比较大时更适合创建索引,数据量较小时没有必要付出索引代价
2. 频繁进行查找操作而不是更新删除插入操作,此时更适合使用索引