对象MongoDB深入学习:存储嵌套对象的技巧(mongodb存储嵌套)
MongoDB 向存储和查询结构化信息提供了优越的支持,在实际的开发过程中,存储嵌套的对象是很常见的, MongoDB 支持存储嵌套的对象,只有将其文档结构化后才能实现存储和检索目标字段和值,本小节介绍如何利用 MongoDB 存储值进行嵌套对象存储。
嵌套结构的字段指的是一个对象中还包含另一个对象,在 MongoDB 中来说,它对应的就是文档中嵌套文档,如:
// 嵌套字段
{ userID: "102941",
name: "Kevin", address: {
street: "Center Road", city: "北京"
}}
上面的案例中,在userID和name之外。我们还定义了一个地址的字段,该字段被设置为一个嵌套的对象本身,而不是一个单独的字段,字段中记录了街道和城市信息,如果不采取此种方式存储则会使用多个字段来表示地址的字段。
MongoDB 能够允许更深层次的嵌套,当插入一个新的元素到已有字段中时,它也可以成为一个新的字段。 MongoDB也支持多重混合嵌套。如:
// 多重混合嵌套
{ userID="102941",
name: "Kevin", address: {
street: "Center Road", cellphone: [
{ model: iPhone,
price: 6999 },
{ model: SamSung,
price: 5999 }
] }
}
每个嵌套内部的文档可以完全由它嵌套的文档决定,可以相互不同,这样字段的灵活性就得到极大的加强。
MongoDB 对嵌套文档的查询非常便捷,可以通过简单的查询来获取嵌套对象里指定字段的值,如查询上面嵌套对象中 iPhon 的价格可以如下查询:
db.collection.find({'address.cellphone.model': 'iPhone'},{'address.cellphone.$': 1})
以上查询可以得到想要的结果,就是获取 model 为 iPhon 的价格。
以上未提及的,MongoDB的嵌套文档还支持其他的查询,使用更加任意灵活的方式来匹配,从而可以用一个查询来完成以前不能完成的工作 ,存储嵌套的对象是一种非常强有力的方法,可以帮助我们在开发过程中应用丰富的结构,从而更好地模拟实际问题,可以灵活地把它们混合成一个复杂的数据模型,从而更好地获取最终需要的结果。