MongoDB学习笔记:文档

栏目: 数据库 · 发布时间: 6年前

内容简介:最近有点忙,足有一周没有继续这个系列(而原计划是用一到两个月的时间完成这个系列的笔记的),按照20英里法则,这样的学习效果不好,今天抽空还是写了一篇,很多事,贵在坚持。上一篇文章,其实题目起错了,不应该包含文档,因为上一篇文章的内容并没有文档的内容,不过CSDN的MD这种方式,修改题目总是不成功,只好在自己的博客修改,这样两篇文章的题目有些不一致了。MongoDB的文档相当于MySQL的行,但是格式都是JSON的,而存储的格式是BSON,是二进制的保存JSON的格式。

最近有点忙,足有一周没有继续这个系列(而原计划是用一到两个月的时间完成这个系列的笔记的),按照20英里法则,这样的学习效果不好,今天抽空还是写了一篇,很多事,贵在坚持。

上一篇文章,其实题目起错了,不应该包含文档,因为上一篇文章的内容并没有文档的内容,不过CSDN的MD这种方式,修改题目总是不成功,只好在自己的博客修改,这样两篇文章的题目有些不一致了。

正文

文档结构

MongoDB的文档相当于 MySQL 的行,但是格式都是JSON的,而存储的格式是BSON,是二进制的保存JSON的格式。

文档的结构是域(field)-值(value)对,类似如下的结构:

{
   field1: value1,
   field2: value2,
   field3: value3,
   ...
   fieldN: valueN
}

值字段可以包含任意BSON数据类型,或者其他文档,或者数组,文档数组,例如:

var mydoc = {
               _id: ObjectId("5099803df3f4948bd2f98391"),
               name: { first: "Alan", last: "Turing" },
               birth: new Date('Jun 23, 1912'),
               death: new Date('Jun 07, 1954'),
               contribs: [ "Turing machine", "Turing test", "Turingery" ],
               views : NumberLong(1250000)
            }

域的名字和值各有一些限制,这个一般不会触及,所以暂时忽略—-当然,触及的时候,可以查一下手册。

点符号

Array(数组)

访问数组的方式,是数组名+“.”+索引(索引是从0开始),如下:

"<array>.<index>"

举个例子(摘自官网):

{
   ...
   contribs: [ "Turing machine", "Turing test", "Turingery" ],
   ...
}

想访问数组的第三个元素“Turingery”,就使用“contribs.2”。

Embedded Documents(嵌入的文档)

想访问嵌入的文档,使用文档名+“.”+“域名”的访问方式,语法如下:

"<embedded document>.<field>"

举例:

{
   ...
   name: { first: "Alan", last: "Turing" },
   contact: { phone: { type: "cell", number: "111-222-3333" } },
   ...
}

“name.last”表示访问name的last域。

“contact.phone.number”表示访问contact的phone域的number域。

文档的限制

文档的大小

最大的BSON文档的大小是16M。

文档域的顺序

文档遵循着写的操作顺序

MongoDB preserves the order of the document fields following write operations…

文档保留着写操作的顺序–这句话有点没理解,是按照第一次写入的顺序吗?

除了:

_id

_id域

_id 域是主键,如果插入时忽略了,系统会自动加上这个字段。

By default, MongoDB creates a unique index on the _id field during the creation of a collection.   The _id field is always the first field in the documents. If the server receives a document that does not have the _id field first, then the server will move the field to the beginning.   The _id field may contain values of any BSON data type, other than an array.
_id
_id
_id

文档结构的其他使用

用于查询过滤器(这篇帖子已经完成),更新规格文档、索引规格文档,这些需要将来细化,这里就不赘述了,官网这里也是给了一个引子,如果不具体看相应的内容,是没有用的。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

挑战程序设计竞赛

挑战程序设计竞赛

秋叶拓哉、岩田阳一、北川宜稔 / 巫泽俊、庄俊元、李津羽 / 人民邮电出版社 / 2013-7-1 / CNY 79.00

世界顶级程序设计高手的经验总结 【ACM-ICPC全球总冠军】巫泽俊主译 日本ACM-ICPC参赛者人手一册 本书对程序设计竞赛中的基础算法和经典问题进行了汇总,分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由浅入深、由易及难的细致讲解,并介绍了许多实用技巧。每章后附有习题,供读者练习,巩固所学。 本书适合程序设计......一起来看看 《挑战程序设计竞赛》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具