加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MongoDB是什么,怎么用?看完你就知道了

发布时间:2019-06-06 06:14:06 所属栏目:编程 来源:Java识堂
导读:一、概述 1.MongoDB是什么?用一句话总结 MongoDB是一款为web应用措施和互联网基本办法计划的数据库打点体系。没错MongoDB就是数据库,是NoSQL范例的数据库。 2.为什么要行使MongoDB? (1)MongoDB提出的是文档、荟萃的观念,行使BSON(类JSON)作为其数
副问题[/!--empirenews.page--]

MongoDB是什么,怎么用?看完你就知道了

一、概述

1.MongoDB是什么?用一句话总结

MongoDB是一款为web应用措施和互联网基本办法计划的数据库打点体系。没错MongoDB就是数据库,是NoSQL范例的数据库。

2.为什么要行使MongoDB?

(1)MongoDB提出的是文档、荟萃的观念,行使BSON(类JSON)作为其数据模子布局,其布局是面向工具的而不是二维表,存储一个用户在MongoDB中是这样子的。

  1. { 
  2.  username:'123', 
  3.  password:'123' 
  4. } 

行使这样的数据模子,使得MongoDB能在出产情形中提供高读写的手段,吞吐量较于mysql等SQL数据库大大加强。

(2)易伸缩,自动妨碍转移。易伸缩指的是提供了分片手段,能对数据集举办分片,数据的存储压力分摊给多台处事器。自动妨碍转移是副本集的观念,MongoDB能检测主节点是否存活,当失活时能自动晋升从节点为主节点,到达妨碍转移。

(3)数据模子由于是面向工具的,以是可以暗示富厚的、有层级的数据布局,好比博客体系中能把“评述”直接怼到“文章“的文档中,而不必像myqsl一样建设三张表来描写这样的相关。

MongoDB是什么,怎么用?看完你就知道了

3.首要特征

(1)文档数据范例

SQL范例的数据库是正规化的,可以通过主键可能外键的束缚担保数据的完备性与独一性,以是SQL范例的数据库常用于对数据完备性较高的体系。MongoDB在这一方面是不如SQL范例的数据库,且MongoDB没有牢靠的Schema,正由于MongoDB少了一些这样的束缚前提,可以让数据的存储数据布局更机动,存储速率越发快。

(2)即时查询手段

MongoDB保存了相关型数据库即时查询的手段,保存了索引(底层是基于B tree)的手段。这一点罗致了相关型数据库的利益,对比于同范例的NoSQL redis 并没有上述的手段。

(3)复制手段

MongoDB自身提供了副本集能将数据漫衍在多台呆板上实现冗余,目标是可以提供自动妨碍转移、扩展读手段。

(4)速率与耐久性

MongoDB的驱动实现一个写入语义 fire and forget ,即通过驱动挪用写入时,可以当即获得返回获得乐成的功效(纵然是报错),这样让写入的速率越发快,虽然会有必然的不安详性,完全依靠收集。

MongoDB提供了Journaling日记的观念,现实上像mysql的bin-log日记,当必要插入的时辰会先昔日记内里写入记录,再完成现实的数据操纵,这样假如呈现停电,历程溘然间断的环境,可以保障数据不会错误,可以通过修复成果读取Journaling日记举办修复。

(5)数据扩展

MongoDB行使分片技能对数据举办扩展,MongoDB能自动分片、自动转移分片内里的数据块,让每一个处事器内里存储的数据都是一样巨细。

4.C/S处事模子

MongoDB焦点处事器首要是通过mongod措施启动的,并且在启动时不需对MongoDB行使的内存举办设置,由于其计划哲学是内存打点最好是交给操纵体系,穷乏内存设置是MongoDB的计划亮点,其它,还可通过mongos路由处事器行使分片成果。

MongoDB的首要客户端是可以交互的js shell 通过mongo启动,行使js shell能行使js直接与MongoDB举办交换,像行使sql语句查询mysql数据一样行使js语法查询MongoDB的数据,其它还提供了各类说话的驱动包,利便各类说话的接入。

5.完美的呼吁行器材

mongodump和mongorestore,备份和规复数据库的尺度器材。输出BSON名目,迁徙数据库。

mongoexport和mongoimport,用来导入导出JSON、CSV和TSV数据,数据必要支持多名目时有效。mongoimport还能用与大数据集的初始导入,可是在导入前趁便还要留意一下,为了能充实操作好mongoDB凡是必要对数据模子做一些调解。

mongosniff,收集嗅探器材,用来调查发送到数据库的操纵。根基就是把收集上传输的BSON转换为易于人们阅读的shell语句。

因此,可以总结获得,MongoDB团结键值存储和相关数据库的最好特征。由于简朴,以是数据极快,并且相对轻易伸缩还提供伟大查询机制的数据库。MongoDB必要跑在64位的处事器上面,且最好单独陈设,由于是数据库,以是也必要对其举办热备、冷备处理赏罚。

二、进入MongoDB shell

由于本篇文章不是API手册,全部这里对shell的行使也是基本的先容什么成果可以用什么语句,首要是为了展示行使MongoDB shell的利便性,假如必要知道详细的MongoDB shell语法可以查阅官方文档。

1.切换数据库

  1. use dba 

建设数据库并不是必需的操纵,数据库与荟萃只有在第一次插入文档时才会被建设,与对数据的动态处理赏罚方法是同等的。简化并加快开拓进程,并且有利于动态分派定名空间。假如担忧数据库或荟萃被不测建设,可以开启严酷模式。

2.插入语法

  1. db.users.insert({username:"smith"}) 
  2. db.users.save({username:"smith"}) 
  • 区别: 若新增的数据中存在主键 ,insert() 会提醒错误,而save() 则变动原本的内容为新内容。如:
  • 已存在数据: {_id : 1, " name " : " n1 " },再次举办插入操纵时,insert({_id : 1, " name " : " n2 " }) 会报主键一再的错误提醒,save({ _id : 1, " name " : " n2 " }) 会把 n1 修改为 n2 。
  • 沟通点: 若新增的数据中没有主键时,会增进一笔记录。已存在数据: { _id : 1, " name " : " n1 " },再次举办插入操纵时,insert({ " name " : " n2 " }) 插入的数据由于没有主键,以是会增进一条数据,save({ " name " : " n2 " }) 增进一条数据。

3.查找语法

  1. db.users.find() 
  2. db.users.count() 

4.更新语法

  1. db.users.update({username:"smith"},{$set:{country:"Canada"}}) 
  2. //把用户名为smith的用户的国度改成Canada 
  3.  
  4. db.users.update({username:"smith"},{$unset:{country:1}}) 
  5. //把用户名为smith的用户的国度字段给移除 
  6.  
  7. db.users.update({username:"jones"},{$set:{favorites:{movies:["casablance","rocky"]}}}) 
  8. //这里首要浮现多值修改,在favorties字段中添加多个值 
  9.  
  10. db.users.update({"favorites.movies":"casablance"},{$addToSet:{favorites.movies:"the maltese"}},false,true) 
  11. //多项更新 

5.删除语法

  1. db.foo.remove() //删除全部数据  
  2. db.foo.remove({favorties.cities:"cheyene"}) //按照前提举办删除  
  3. db.drop() //删除整个荟萃 

6.索引相干语法

  1. db.numbers.ensureIndex({num:1}) 
  2. //建设一个升序索引  
  3. db.numbers.getIndexes() 
  4. //获取所有索引 

7.根基打点语法

  1. show dbs 
  2. //查询全部数据库  
  3. show collections 
  4. //表现全部表  
  5. db.stats() 
  6. //表现数据库状态信息  
  7. db.numbers.stats() 
  8. //表现荟萃表状态信息  
  9. db,shutdownServer() 
  10. //遏制数据库  
  11. db.help() 
  12. //获取数据库操纵呼吁  
  13. db.foo.help() 
  14. //获取表操纵呼吁  
  15. tab 键 //能自动帮我们补全呼吁 

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读