MongoDB文档翻译-引言-文档
2017-02-23 13:42
260 查看
说明:英文原文地址:https://docs.mongodb.com/v3.2/core/document/。
本文章属个人翻译,作个人学习之用,如有雷同,纯属巧合。如有错误之处,欢迎指正。
字段的值可以是任意BSON数据类型,包括其它文档、数组和文档数组。例如,下面的文档包含各种类型:
以上字段有如下数据类型:
_id保存了一个ObjectId
name保存了一个嵌入文档,该嵌入文档含有first和last字段
birth和death保存Date类型的值
contribs保存了字符串数组
views保存了NumberLong类型的值
文档对字段名有如下限制:
字段_id是保留字段,作为主键用。它的值在文档中必须是唯一的,不可以修改,可以是除了数组外的任意类型。
字段名不能以美元符号($)开头
字段名不能包含点字符(.)
字段名不能包含null字符
BSON文档可能会有多个相同名字的字段。大多数MongoDB接口用一种不支持重复字段的机构(如哈希表)来表示文档。如果你需要操作有多个相同名字的字段的文档,参考驱动文档。
某些由内部MongoDB进程创建的文档可能包含重复字段,但是MongoDB进程不会在用户文档中添加重复的字段。
例如,给的一个文档中的如下字段:
要指定
例如,给定文档中的如下字段:
要指定
要指定
最大文档大小是用来确保一个文档的大小不会超出内存大小,或者传输时不超出带宽。如要存储超出最大大小的文档,MongoDB提供了GridFS API。参考
_id字段总是文档中的第一个字段
包含重命名字段的更新可能导致文档中字段顺序重排
从版本2.6开始,MongoDB总是试图保存文档中的字段顺序。
通过带
_id字段有如下行为和限制:
默认地,MongoDB在创建文档时在_id字段创建一个唯一索引。
_id字段总是文档的第一个字段。如果服务器收到一个_id字段不是在第一个位置的文档,服务器会把该字段移到开始。
_id字段可以是除数组类型外的其他任意BSON数据类型。
*警告:
为保证复制功能正常,不要在_id字段中存储BSON正则表达式。
以下是_id字段常用的值:
使用ObjectId
使用自然唯一标识符,如果可用的话。即节省空间,有避免了多余的索引。
生成自增数字
在应用代码中生成一个UUID。为了更有效的在集合和_id索引中存储UUID,把UUID保存为BSON
二进制子类型的值在0-7或者128-135之间,
字节数组的长度为:0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,32
使用驱动的BSON UUID机制来生成UUID。注意,不同的驱动对UUID序列化和反序列化的实现逻辑可能不一样,可能在不同驱动之间不兼容。参考驱动文档查看关于UUID互操作性的更多信息。
注意:
大多数MongoDB驱动客户端在将插入操作发送到MongoDB前或把_id字段包含在内,生成一个ObjectId,然而,如果客户端发送了一个没有_id字段的无奈地,
可以用
本文章属个人翻译,作个人学习之用,如有雷同,纯属巧合。如有错误之处,欢迎指正。
文档
MongoDB把数据记录存储为BSON文档。BSON文档是JSON文档的二进制表示,它比JSON包含更多的数据类型。BSON规范可参考bsonspec.org。文档结构
MongoDB的文档由键-值对组成,有如下结构:{ 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) }
以上字段有如下数据类型:
_id保存了一个ObjectId
name保存了一个嵌入文档,该嵌入文档含有first和last字段
birth和death保存Date类型的值
contribs保存了字符串数组
views保存了NumberLong类型的值
字段名
字段名是字符串。文档对字段名有如下限制:
字段_id是保留字段,作为主键用。它的值在文档中必须是唯一的,不可以修改,可以是除了数组外的任意类型。
字段名不能以美元符号($)开头
字段名不能包含点字符(.)
字段名不能包含null字符
BSON文档可能会有多个相同名字的字段。大多数MongoDB接口用一种不支持重复字段的机构(如哈希表)来表示文档。如果你需要操作有多个相同名字的字段的文档,参考驱动文档。
某些由内部MongoDB进程创建的文档可能包含重复字段,但是MongoDB进程不会在用户文档中添加重复的字段。
字段值的限制
对于添加了索引的集合,所索引的字段的值有最大索引长度的限制。详情可参考最大索引长度。点记号法
MongoDB用点记号法来访问数组中的元素,以及嵌入文档的字段。
数组
要指定或访问一个以0开始作为下标的数组,把数组名、点(.)和下标连起来,然后用引号(“)围起来:"<array>.<index>"
例如,给的一个文档中的如下字段:
{ ... contribs: [ "Turing machine", "Turing test", "Turingery" ], ... }
要指定
contribs的第三个元素,用点记号法
"contribs.2"。
嵌入文档
要用点记号法指定或访问嵌入文档中的字段,把数组名、点(.)和下标连起来,然后用引号(“)围起来:"<embedded document>.<field>"
例如,给定文档中的如下字段:
{ ... name: { first: "Alan", last: "Turing" }, contact: { phone: { type: "cell", number: "111-222-3 bae3 333" } }, ... }
要指定
name字段中的
last字段,用
"name.last"
要指定
contact字段中的
phone文档中的
number字段,用
"contact.phone.number"
文档限制
对于文档,有如下限制:文档大小限制
BSON文档的最大大小是16M。最大文档大小是用来确保一个文档的大小不会超出内存大小,或者传输时不超出带宽。如要存储超出最大大小的文档,MongoDB提供了GridFS API。参考
mongofiles和驱动文档以获得关于GridFS的更多信息。
文档字段顺序
MongoDB会保存写操作时的文档字段顺序,以下情况除外:_id字段总是文档中的第一个字段
包含重命名字段的更新可能导致文档中字段顺序重排
从版本2.6开始,MongoDB总是试图保存文档中的字段顺序。
_id字段
MongoDB中,每个保存在集合中的文档都需要一个唯一的_id字段作为主键。如果插入的文档没有_id字段,MongoDB驱动自动为_id字段生成一个ObjectId。
通过带
upsert:true选项的更新操作所插入的文档也会自动生成_id字段。
_id字段有如下行为和限制:
默认地,MongoDB在创建文档时在_id字段创建一个唯一索引。
_id字段总是文档的第一个字段。如果服务器收到一个_id字段不是在第一个位置的文档,服务器会把该字段移到开始。
_id字段可以是除数组类型外的其他任意BSON数据类型。
*警告:
为保证复制功能正常,不要在_id字段中存储BSON正则表达式。
以下是_id字段常用的值:
使用ObjectId
使用自然唯一标识符,如果可用的话。即节省空间,有避免了多余的索引。
生成自增数字
在应用代码中生成一个UUID。为了更有效的在集合和_id索引中存储UUID,把UUID保存为BSON
BinData类型。把
BinData类型的值作为索引更有效率,前提是其:
二进制子类型的值在0-7或者128-135之间,
字节数组的长度为:0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,32
使用驱动的BSON UUID机制来生成UUID。注意,不同的驱动对UUID序列化和反序列化的实现逻辑可能不一样,可能在不同驱动之间不兼容。参考驱动文档查看关于UUID互操作性的更多信息。
注意:
大多数MongoDB驱动客户端在将插入操作发送到MongoDB前或把_id字段包含在内,生成一个ObjectId,然而,如果客户端发送了一个没有_id字段的无奈地,
mongod会增加_id字段,生成ObjectId。
文档结构的其它用途
除了用文档结构来定义数据记录,MongoDB还将其贯穿于其它用途中,包含但不限于:查询过滤器、更新规则文档、索引规则文档。查询过滤器文档
查询过滤器文档用于指定选择哪些记录来执行读取、更新、删除操作的条件。可以用
<field>:<value>表达式来指定相等操作和查询操作符表达式:
{ <field1>: <value1>, <field2>: { <operator>: <value> }, ... }
更新规则文档
在db.collection.update()操作中,更新规则文档用更新操作符来指定特定字段上的数据修改。
{ <operator1>: { <field1>: <value1>, ... }, <operator2>: { <field2>: <value2>, ... }, ... }
索引规则文档
索引规则文档定义要建立索引的字段和索引类型:{ <field1>: <type1>, <field2>: <type2>, ... }
相关文章推荐
- MongoDB文档翻译-引言-数据库和集合
- MongoDB官方文档翻译系列之 -- 执行二阶段提交
- MongoDB文档翻译-聚集管道
- MongoDB文档翻译-调试Map函数
- MongoDB文档翻译-聚集-聚集管道优化
- MongoEngine文档翻译__新手教程(一)安装MongoEngine&连接MongoDB
- MongoDB文档翻译-Map Reduce与分片集合
- MongoDB索引文档翻译(一)
- MongoDB文档翻译-调试Reduce函数
- Python-MongoDB官方文档翻译
- MongoDB文档翻译-聚集-聚集管道与分片集合
- MongoDB文档翻译-Map Reduce的并发
- MongoDB文档翻译-mongo Shell-使用mongo Shell帮助
- MongoDB文档翻译-聚集-对用户的爱好进行聚集
- MongoDB文档翻译-Map Reduce示例
- MongoDB文档翻译-CRUD操作-插入文档
- TensorFlow 官方文档 Programmer's Guide 中文翻译 —— 引言
- MongoDB官方文档翻译系列之 -- 索引交集
- MongoDB文档翻译-CRUD操作-查询文档
- MongoDB文档翻译-CRUD操作-从查询中返回投影字段