第一篇 - 基础知识.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第⼀章 - 基础知识 我们通过学习 MongoDB 的基本⼯作原理,开始我们的 MongoDB 之旅。当然,这是 学习 MongoDB 的核⼼,它也能帮助我们回 诸如,MongoDB 适⽤于哪些场景这些更 ⾼层次的问题。 开始之前,这有六个简单的概念我们需要了解⼀下。 1. MongoDB 中的 database 有着和你熟知的数据库⼀样的概念 (对 Oracle 来说 就是 schema) 。⼀个 MongoDB 实例中,可以有零个或多个数据库,每个都作为 ⼀个⾼等容器,⽤于存储数据。 2. 数据库中可以有零个或多个 collections (集合) 。集合和传统意义上 的 table 基本⼀致,你可以简单的把两者看成是⼀样的东西。 3. 集合是由零个或多个 documents (⽂档)组成。同样,⼀个⽂档可以看成是 ⼀ row。 4 . ⽂档是由零个或多个 fields (字段)组成。, 没错,它就是 columns。 5. Indexes (索引)在 MongoDB 中扮演着和它们在 RDBMS 中⼀样的⾓⾊。 6. Cursors (游标)和上⾯的五个概念都不⼀样,但是它⾮常重要,并且经常被忽 视,因此我觉得它们值得单独讨论⼀下。其中最重要的你要理解的⼀点是,游 标是,当你问 MongoDB 拿数据的时候,它会给你返回⼀个结果集的指针⽽不 是真正的数据,这个指针我们叫它游标,我们可以拿游标做我们想做的任何事 情,⽐如说计数或者跨⾏之类的,⽽⽆需把真正的数据拖下来,在真正的数据 上操作。 综上,MongoDB 是由包含 collections 的 databases 组成的。 ⽽ collection 是由 documents组成。每个 document是由 fields 组 成。 Collections 可以被 indexed,以便提⾼查找和排序的性能。最后,当我们 从 MongoDB 获取数据的时候,我们通过 cursor 来操作,读操作会被延迟到需要实 际数据的时候才会执⾏。 那为什么我们需要新的术语(collection s. table , document s. row and field s. column) ? 为了让看起来更复杂点?事实上,虽然这些概念和关系型数据中的概念类似,但是还 是有差异的。核⼼差异在于,关系型数据库是在 table 上定义的columns,⽽⾯向 ⽂档数据库是在 document 上定义的 fields。也就是说,在 collection 中的每 个 document 都可以有它⾃⼰独⽴的 fields。因此,对于 collection 来说是个 简化了的 table ,但是⼀个 document 却⽐⼀ row 有更多的信息。 虽然这些概念很重要,但是如果现在搞不明⽩也不要紧。多插⼏条数据就明⽩上⾯说 的到底是什么意思了。反正,要点就是,集合不对存储内容严格限制 (所谓的⽆模式 (schema-less)) 。字段由每个独⽴的⽂档进⾏跟踪处理。这样做的优点和缺点将在下⾯ 章节⼀⼀讨论。 好了我们开始吧。如果你还没有运⾏ MongoDB ,那么快去运⾏ mongod 服务和开启 mongo shell 。shell ⽤的是 Ja aScript 。你可以试试⼀些全局命令,⽐如 help 或 者 exit。如果要操作当前数据库,⽤ db ,⽐如 db.help() 或者db.stats()。如 果要操作指定集合,⼤多数情况下我们会操作集合⽽不是数据库, ⽤ db.COLLECTION_N ME ,⽐如db.unicorns.help() 或 者 db.unicorns.count()。 我们继续,输⼊ db.help(),就能拿到⼀个对 db 能执⾏的所有的命令的列表。 顺便说⼀句:因为这是⼀个 Ja aScript shell ,如果你输⼊的命令漏了 (),你会看到这个 命令的源码,⽽不是执⾏这个命令。我提⼀下,是为了避免你执⾏漏了括号的命令, 拿到⼀个以 function (...){ 开头的返回的时候,觉得神奇不可思议。⽐如说, 如果你输⼊ db.help (不带括号), 你会看到 help ⽅法的内部实现。 ⾸先我们⽤全局的 use 来切换数据库,继续,输⼊ use learn。这个数

文档评论(0)

0520 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档