時(shí)間:2024-03-26 14:46作者:下載吧人氣:35
MongoDB 向存儲(chǔ)和查詢結(jié)構(gòu)化信息提供了優(yōu)越的支持,在實(shí)際的開發(fā)過程中,存儲(chǔ)嵌套的對象是很常見的, MongoDB 支持存儲(chǔ)嵌套的對象,只有將其文檔結(jié)構(gòu)化后才能實(shí)現(xiàn)存儲(chǔ)和檢索目標(biāo)字段和值,本小節(jié)介紹如何利用 MongoDB 存儲(chǔ)值進(jìn)行嵌套對象存儲(chǔ)。
嵌套結(jié)構(gòu)的字段指的是一個(gè)對象中還包含另一個(gè)對象,在 MongoDB 中來說,它對應(yīng)的就是文檔中嵌套文檔,如:
// 嵌套字段
{ userID: "102941",
name: "Kevin", address: {
street: "Center Road", city: "北京"
}}
上面的案例中,在userID和name之外。我們還定義了一個(gè)地址的字段,該字段被設(shè)置為一個(gè)嵌套的對象本身,而不是一個(gè)單獨(dú)的字段,字段中記錄了街道和城市信息,如果不采取此種方式存儲(chǔ)則會(huì)使用多個(gè)字段來表示地址的字段。
MongoDB 能夠允許更深層次的嵌套,當(dāng)插入一個(gè)新的元素到已有字段中時(shí),它也可以成為一個(gè)新的字段。 MongoDB也支持多重混合嵌套。如:
// 多重混合嵌套
{ userID="102941",
name: "Kevin", address: {
street: "Center Road", cellphone: [
{ model: iPhone,
price: 6999 },
{ model: SamSung,
price: 5999 }
] }
}
每個(gè)嵌套內(nèi)部的文檔可以完全由它嵌套的文檔決定,可以相互不同,這樣字段的靈活性就得到極大的加強(qiáng)。
MongoDB 對嵌套文檔的查詢非常便捷,可以通過簡單的查詢來獲取嵌套對象里指定字段的值,如查詢上面嵌套對象中 iPhon 的價(jià)格可以如下查詢:
db.collection.find({'address.cellphone.model': 'iPhone'},{'address.cellphone.$': 1})
以上查詢可以得到想要的結(jié)果,就是獲取 model 為 iPhon 的價(jià)格。
以上未提及的,MongoDB的嵌套文檔還支持其他的查詢,使用更加任意靈活的方式來匹配,從而可以用一個(gè)查詢來完成以前不能完成的工作 ,存儲(chǔ)嵌套的對象是一種非常強(qiáng)有力的方法,可以幫助我們在開發(fā)過程中應(yīng)用豐富的結(jié)構(gòu),從而更好地模擬實(shí)際問題,可以靈活地把它們混合成一個(gè)復(fù)雜的數(shù)據(jù)模型,從而更好地獲取最終需要的結(jié)果。
網(wǎng)友評(píng)論