MongoDB 将数据记录存储为 BSON 文档。BSON 是JSON文档的二进制表示。BSON是一种二进制序列化格式,用于在 MongoDB 中存储文档和进行远程过程调用。
Type | Alias |
---|---|
Double | “double” |
String | “string” |
Array | “array” |
ObjectId | “objectId” |
Boolean | “bool” |
Date | “date” |
32-bit integer | “int” |
64-bit integer | “long” |
Timestamp | “timestamp” |
MongoDB 文档由字段和值对组成,具有以下结构:
{
field1: value1,
field2: value2,
field3: value3,
...
fieldN: valueN
}
字段的值可以是任何 BSON数据类型,包括其他文档、数组和文档数组。例如,以下文档包含不同类型的值
{
_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 :Date类型。
contribs :字符串数组。
views :NumberLong类型。
MongoDB 使用点符号来访问数组中的元素和嵌入式文档的字段。
如下数组:
{
...
contribs: [ "Turing machine", "Turing test", "Turingery" ],
...
}
要获取数组contribs中的第三个元素,需要将数组名称与点 ( .) 和索引位置连接起来,并用引号引起来:即 “contribs.2”。
如下文档:
{
...
name: { first: "Alan", last: "Turing" },
contact: { phone: { type: "cell", number: "111-222-3333" } },
...
}
要获取字段name 中last,请使用点符号并且用双引号引起来"name.last"。
BSON 文档大小不要超过16M。如果要存储大文档可以使用MongoDB 提供的 GridFS API
与 JavaScript 对象不同,BSON 文档中的字段是有序的。
比较文档时,字段顺序很重要。例如,在将文档中字段a和b查询进行比较时:
{a: 1, b: 1}等于{a: 1, b: 1}
{a: 1, b: 1}不等于{b: 1, a: 1}