2015-11-16 135 views
3

我一直在努力讓自己的頭部圍繞NoSQL,並且看到將數據嵌入到文檔中的好處。在MongoDB中存儲關係數據(NoSQL)

我不明白,希望有人能清除,是如何存儲數據,如果它必須是關係。

例如。

我有很多用戶。他們都在購買產品。所以每次他們購買產品時,我們都會將它添加到mongo的用戶文檔中,因此它的嵌入性和全部功能都很棒。

我遇到的問題是當涉及到該產品的某些內容發生變化時。

假設用戶A購買了名爲「Porsche」的汽車。然後,我們在用戶配置文件中添加一個引用。然而,在一場奇怪的比賽中,保時捷被法拉利收購。

你現在正在做什麼?更新每一條記錄並更改保時捷到法拉利的名稱?

通常在SQL中,我們將創建3個表。一個用於用戶,一個用於汽車(描述,型號等)&一個用於映射用戶購買。

你對Mongo做同樣的事嗎?看起來如果你沿着這條路線走下去,你試圖讓Mongo做SQL的方式,這不是它的目的。

我可以理解某些數據對於嵌入(地址,聯繫人詳細信息,註釋等)的好處,但是當您需要引用可以並需要定期更改的數據時會發生什麼情況?

我希望這個問題是清楚的

+3

如果數據是關係數據,請將其存儲在關係數據庫中。 – David

回答

2

DBREFS /手冊參考是專門爲解決這個問題。除了手動將數據添加到每個文檔,然後在更改某些內容時需要更新時,您可以將引用存儲到另一個集合。有關詳細信息,請參閱mongoDB文檔。

References in Mongo

然後,所有你需要做的就是更新參考收集和變化將在所有下游位置得到體現。