MongoDB中的文档是一种以JSON-like格式存储的结构化数据。每个文档都有一个属性_id作为主键。文档更加灵活,没有固定的模式。
一个简单的用户文档示例:
{
"_id": 1,
"name": "John",
"age": 30,
"address": {
"street": "Main St",
"city": "New York"
}
}
MongoDB文档有以下特点:
- 文档结构相对灵活,没有固定的模式。不同的文档可以有不同的字段。
- 文档中的数据都是以键-值对的形式存储的。
- 文档中的值可以是基本数据类型,也可以是其他文档甚至文档数组。
- 文档中的键是字符串,只能包含字母、数字和下划线。
- 文档中的键所对应的值可以是Null、布尔值、数值、字符串、日期对象、正则表达式、文档等。
- 文档必须有一个主键_id。如果插入文档时没有指定_id,MongoDB会自动为文档生成一个ObjectId类型的_id。
- 文档可以嵌套其他文档,实现一对一和一对多的关系。
- 同一个集合中的文档不需要有相同的结构。
示例:
insertion:
db.users.insertOne({
"_id": 1,
"name": "John",
"age": 30,
"address": {
"street": "Main St",
"city": "New York"
},
"emails": [
"john@example.com",
"john@gmail.com"
]
})
query:
db.users.findOne({name: "John"}, {_id: 0, name: 1, "address.city": 1})
# Result
{
"name": "John",
"address": { "city": "New York" }
}