MongoDB学习笔记

mongo属于nosql非关系数据库。
一、关系与非关系数据库区别:

1、数据和数据之间不存在关系,每条数据独立个体存在字典之中;
2、mysql扩展性差,大数据量下IO压力大,表结构更改困难;
3、mongo易扩展,大数据量高性能(读写),灵活的数据模型(无需事先为要存储的数据建立字段),高可用;
4、mongo占硬盘空间大

二、mongo基础命令
查看当前数据库:db
查看所有数据库:show dbs
切换数据库:use 库名
删除当前数据库:db.dropDatabase()(db表示当前数据库)
自动创建数据库和集合(相当于mysql的表),不需要手动创建,插入文档(相当mysql中的记录)时自动创建
手动创建数据库和集合:db.createCollection("集合名")
查看集合:show collections
删除集合:db.集合名称.drop()
三、mongo存储数据类型

image.png

四、mongo增删改查
1、增

image.png
*注:

db.集合名称.save(ducument)
如果文档id已存在,则修改,如果不存在则添加
2、查
查询所有数据:db.集合名.find() 
查询一条数据:db.集合名.findone({键:值}).pretty()
等于 :默认是等于判断,没有运算符
小于:$It
小于等于:$Ite
大于:$gt
大于等于:$gte
不等于:$ne
eg:
  db.集合名.find({age:{$gte:18}})
①判断是否在某个范围内
使用$in, $nin
eg:
  db.集合名.find({age:{$in:[18,28,38]}})
②多个条件同时:and
eg:
  db.集合名.find({age:{$gte:18},gender:true})
③条件之间是或的关系:$or
eg:
  db.集合名.find({$or:[{age:{$gte:18}},{gender:true}]})
  db.集合名.find({$or:[{age:{$gte:18}},{gender:true}],name:'zs'})
④支持正则表达式
匹配以abc开头的:
db.集合名.find({sku:/^abc/})
匹配以789结尾的:
db.集合名.find({sku:{$regex:'789$'}})
⑤limit,skip
limit:用于读取指定数量的文档
skip:用于跳过是定数量的文档(相当于翻页)
eg:
  db.集合名.find().skip(2).limit(2)
⑥投影
从查询到的返回结果中,只选择必要的字段
值为1表示显示,0表是不显示(一般不用写),_id是默认显示的  
eg:
  db.集合名.find({},{字段名称:1,_id:0}) 
⑦排序 sort()
db.集合名.find().sort(字段:1,……)
参数1:升序
参数-1:降序
⑧统计个数 count
两种方式:
db.集合名.find({条件}).count()
db.集合名.count({条件})
⑨去重 distinct
db.集合名.distinct('去重字段',{条件})
db.集合名.count({条件})
3、改

image.png
*注:

尽量用$set,代表指定键值,如果不指定,会替代原来所有的字段
4、删

image.png

五、数据的备份与恢复
备份:
mongodump -h dbhost -d dbname -o dbdirectory
-h 服务器地址 ,也可以指定端口号
-d 需要备份的数据库名称
-o 备份的数据存放位置,此目录存放着备份出来的数据
恢复:
mongorestore -h dbhost -d dbname -o dbdirectory
-h 服务器地址 ,也可以指定端口号
-d 需要恢复的数据库实例
-o 备份的数据所在的位置
五、聚合

聚合是基于数据处理的聚合管道,每个文档通过一个由多个阶段组成的管道,可以对每个阶段的管道进行分组,过滤等功能,然后经过一系列的处理,输出相应的结果。

db.集合名称.aggregate({管道:{表达式}})
常用管道如下:
$group:将集合中的文档分组,可用于统计结果
$match:过滤数据,只输出符合条件的文档
$project:修改输入文档的结构,如重命名、增加、删除字段、创建计算结果
$sort:将输入文档排序后输出
$limit:限制聚合管道返回的文档数
$skip:跳过指定数量的文档,并返回余下的文档
$unwind:将数据类型的字段进行拆分

image.png

六、索引

索引:以提升查询速度

db.集合名.ensureIndex({属性:1})
1表示升序,-1表示降序

image.png
数据去重:使用数据库建立关键字段的唯一索引进行去重
通过多个字段判断数据的唯一性:主要用到联合索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值