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

实例数据如下(集合名为excle):

image.png
#1、 按部门分组,并求出各部门人数
 db.excle.aggregate({$group:{_id:"$部门",count:{$sum:1}}})
image.png
#2、 将上图结果中的_id更改为'部门',并将_id隐藏
 db.excle.aggregate({$group:{_id:"$部门",count:{$sum:1}}},{$project:{部门:"$_id",count:1, _id:-1}})
image.png
#3、 工龄在一年及以上,各部门人数
db.excle.aggregate({$match:{工龄:{$gte:"1"}}},{$group:{_id:"$部门",count:{$sum:1}}},{$project:{_id:0,部门:"$_id",count:1}})
image.png
注意:
1、$group对应的字典中有几个键,结果中就有几个键
2、 分组依据需要放到'_id'后面
3、取不同字段的值需要使用$,$age

六、索引

索引:以提升查询速度

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351