mongo数据库学习笔记(1)
命令
- 查看当前数据库:db
- 查看所有数据库:show dbs/show databases
- 切换数据库:use db_name
- 删除当前的数据库:db.dropDatabase()
- 当想不存在的集合中插入数据,集合会被创建出来
- db.createCollection(“名字”)
- db.createCollection(“sub”,{capped:true,size:10})
- 参数capped:默认值false指不设置上限,无需指定size个数
增删改查操作
- 查看集合数据
- db.集合.find()
db为当前所在数据库
- db.集合.find()
- 增加数据
- 当传递_id时,即为指定id,当不传递时创建一个唯一的id
db.集合.insert({})
插入数据,当插入的数据对应的id在集合中存在,就会报错db.集合.save({})
插入数据,当插入的数据对应的id存在时,则会更新新的数据库
- 更新数据库(改)
db.集合名.update({需要更新的原数据条件},{新的数据对})
- 此方式会将对应条件的数据内容全部更新为新的数据对,会删除不需要更新的数据对
db.集合名.update({需要更新的原数据条件},{$set:{新的数据对}})
- 只会将对应条件的数据更新成新的数据
db.集合名.update({需要更新的原数据条件},{$set:{新的数据对}},{multi:true})
- true:代表更新满足对应条件的所有数据
- 注:multi只能与$一起用
- 删除
bd.集合.remove({数据条件},{justone:true})
- true代表仅仅删除一条,默认为全部删除
高级用法
-
查询
db.集合.find({对应的条件})# 查询所有满足条件的数据
db.集合.findOne({对应的条件})# 查询后,返回第一个
db.集合.find({对应的条件}).pretty()# 查询后美化格式
-
比较运算符
- 小于:$lt
- 小于等于:$lte
- 大于:$gt
- 大于等于:$gte
- 不等于:$ne
例如
db.集合.find({age:{$gte:18}})
- 范围:$in
判断在18,28,38之间的一个
db.集合.find({age:{$in:[18,28,38]}})
-
逻辑运算符
- and:直接在{}中添加
- or:
$or
`db.集合.find({$or:[{age}]})
-
可适用正则
-
limit和skip
- limit:用于指定前多少个的数据
db.集合.find().limit(2)# 查询前两个数据
- skip:用于跳过指定数量的文档
db.集合.find().skip(2)# 从第三个开始查询
- 同时使用:更快,可进行翻页
db.集合.find().skip(5).limit(4)
- limit:用于指定前多少个的数据
-
投影:对于返回的数据,只选择必要的字段
db.集合.find({条件},{字段名称})
- 解释:对于字段名称,1为显示,0为不显示,_id默认显示的,手动设置为0则不显示。对应的条件为空则查询所有需要的字段,默认为空。
-
排序
- 方法sort():参数为1升序,参数为-1降序
- `db.集合.find().sort({对于的字段:1或-1})
- 方法sort():参数为1升序,参数为-1降序
-
统计
- count方法:`db.集合.find({条件}).count()
- 或者:
db.集合.count({条件})
-
去重
db.集合.distinct("字段",{需要筛选的条件})
-
数据的备份和恢复
- 备份:
mongodump -h dbhost -d dbname -o dbdirectory
- 解释:-h:是服务器地址和端口号 -d:备份的数据库名称 -o:备份存放的位置
- 注:备份本地时,-h,-d可省略
- 恢复:
mongorestore -h dbhost -d dbname --dir dbdirextory
- 解释:-h:服务器地址 -d:需要恢复在那个数据库 --dir:备份数据的位置
- 备份:
-
聚合 aggregate
- db.集合名称.aggregate({管道:{表达式}})
- 常用管道
- $group:将集合中的文档分组,可用于统计结果
- $match:过滤数据,输出符合条件的文档
- $project:修改输入文档的结构,可对上一个管道进行重命名、可选显示
- $sort:将管道文档排序后输出
- $limit:限制聚合后返回的文档数
- $skip:跳过指定数量的文档,返回余下的文档
- $unwind:将数组类型的字段进行拆分
- 表达式
- $sum:求和,当:1时则代表一个单位计数
- $avg:计算平均数
- $min:计算最小值
- $max:计算最大值
- $push:在结果文档中插入到一个数组中
- $first:根据资源文档的排序获取第一个文档数据
- $last:根据资源文档的排序获取最后一个文档数据