完整的MongoDB学习笔记位于IT老兵博客。
MongoDB学习笔记:文档。
前言
最近有点忙,足有一周没有继续这个系列(而原计划是用一到两个月的时间完成这个系列的笔记的),按照20英里法则,这样的学习效果不好,今天抽空还是写了一篇,很多事,贵在坚持。
上一篇文章,其实题目起错了,不应该包含文档,因为上一篇文章的内容并没有文档的内容,不过CSDN的MD这种方式,修改题目总是不成功,只好在自己的博客修改,这样两篇文章的题目有些不一致了。
正文
文档结构
MongoDB的文档相当于MySQL的行,但是格式都是JSON的,而存储的格式是BSON,是二进制的保存JSON的格式。
文档的结构是域(field)-值(value)对,类似如下的结构:
1 | { |
值字段可以包含任意BSON数据类型,或者其他文档,或者数组,文档数组,例如:
1 | var mydoc = { |
域的名字和值各有一些限制,这个一般不会触及,所以暂时忽略—-当然,触及的时候,可以查一下手册。
点符号
Array(数组)
访问数组的方式,是数组名+“.”+索引(索引是从0开始),如下:
1 | "<array>.<index>" |
举个例子(摘自官网):
1 | { |
想访问数组的第三个元素“Turingery”,就使用“contribs.2”。
Embedded Documents(嵌入的文档)
想访问嵌入的文档,使用文档名+“.”+“域名”的访问方式,语法如下:
1 | "<embedded document>.<field>" |
举例:
1 | { |
“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
可以是任何BSON类型,除了数组。
文档结构的其他使用
用于查询过滤器(这篇帖子已经完成),更新规格文档、索引规格文档,这些需要将来细化,这里就不赘述了,官网这里也是给了一个引子,如果不具体看相应的内容,是没有用的。
总结
足有一周没有继续这个系列了,心里有些慌,今天终于又完成一篇,心里略微踏实了一些—-尽快有些仓促。
参考
https://docs.mongodb.com/manual/core/document/#bson-document-format