MongoDB为BSON格式储存数据,没有固定的数据结构,但不代表无需设计数据模型。常见的MongoDB数据模型包含内嵌式结构和规范式结构
结构划分:
内嵌式结构:
一个文档中包含一个文档,被包含的文档数据被称为“内嵌文档”,包含内嵌文档的文档称为“外层文档”,如果是顶层结构,被称为“顶层文档”,适合一对一关系
对独立性高、更可能被查询到的数据作为外层文档,补充数据作为内嵌文档,数组元素过多时应避免使用内嵌文档
#即为外层文档,又为顶层文档;name对应为内嵌文档
{
"Id": objectId("60ed3c06675ac3e39ba7 a962 "),
"name": {
"firstName": "charlie",
"lastName": "gordon"
},
"balance": 100
}
#最外层为顶层文档,info对应为外层文档&内嵌文档,name对应为内嵌文档
{
"id": "1212121",
"name": "dmbjz",
"info": {
"Id": objectId("60ed3c06675ac3e39ba7 a962 "),
"name": {
"firstName": "charlie",
"lastName": "gordon"
},
"balance": 100
}
}
规范式结构:
如果同一个集合中,A文档的某个字段为B文档的主键值,则A文档符合规范式结构,适合一对多关系、读取频率远高于更新频率的数据,缺点是需要多次读取操作才能获取所有关联的数据
文档关系:
树形结构:
在同一个集合中大量的文档保存一个指向父节点或子节点的字段
树形结构一
树形结构二