欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MongoDB学习笔记

程序员文章站 2022-06-06 23:00:42
...

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存储数据类型

MongoDB学习笔记

四、mongo增删改查
1、增

MongoDB学习笔记
*注:

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、改

MongoDB学习笔记
*注:

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

MongoDB学习笔记

五、数据的备份与恢复

备份:
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:将数据类型的字段进行拆分

MongoDB学习笔记

六、索引

索引:以提升查询速度

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

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

相关标签: mongo