近来需要设计使用MongoDB,想简要学习一下。
MongoDB的数据模式是一种灵活模式,其集合并不限制文档结构。这种灵活性让对象和数据库文档之间的映射变得很容易,及时数据记录之间有很大的变化,每个文档也可以很好的映射到各条不同的记录。但在实际使用中,同一个集合中的文档往往都有一个比较类似的结构。
文档结构
描述文档结构的方式主要有两种:引用及内嵌。
内嵌
内嵌的方式指的是把相关联的数据保存在同一个文档结构之中。MomgoDB的文档结构允许一个字段或者一个数组内的值作为一个嵌套的文档。如果使用内嵌文档模型,应用程序只需查询一次就可以获得所有需要的信息。
一般来说,下述情况建议使用内嵌数据:
1. 数据对象之间有包含关系。
2. 数据对象之间有一对多的关系。
一对一关系
{
_id: "joe",
name: "Joe Bookreader",
address: {
street: "123 Fake Street",
city: "Faketon",
state: "MA",
zip: "12345"
}
}
一对多关系
{
_id: "joe",
name: "Joe Bookreader",
addresses: [
{
street: "123 Fake Street",
city: "Faketon",
state: "MA",
zip: "12345"
},
{
street: "1 Some Other Street",
city: "Boston",
state: "MA",
zip: "12345"
}
]
}
引用
引用方式通过存储链接或者引用信息来实现两个不同文档之间的关联。应用程序可以通过解析这些数据库引用来访问相关数据。
一般来说,下述情况下适合使用引用方式:
1. 当内嵌数据会导致很多数据的重复,并且读性能的优势又不足于覆盖数据重复的弊端
2. 需要表达比较复杂的多对多关系的时候
3. 大型层次结果数据集