簡體   English   中英

在MongoDB中存儲關系數據(NoSQL)

[英]Storing relational data in MongoDB (NoSQL)

我一直試圖了解NoSQL,我確實看到了在文檔中嵌入數據的好處。

我無法理解,並希望有人可以清理,如果它必須是關系的,如何存儲數據。

例如。

我有很多用戶。 他們都在購買產品。 因此,每次他們購買產品時,我們都會在mongo的用戶文檔下添加它,因此它的嵌入式和一切都很棒。

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

讓我們說用戶A購買了一輛名為“保時捷”的汽車。 然后,我們在用戶配置文件下添加對該引用的引用。 然而,在一系列奇怪的事件中,保時捷被法拉利收購。

您現在做什么,更新每一條記錄並更改為保時捷到法拉利的名稱?

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

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

我可以理解某些數據如何適用於嵌入(地址,聯系方式,注釋等),但是當您需要引用可以並且需要定期更改的數據時會發生什么?

我希望這個問題很清楚

DBRefs / Manual References專門用於解決此問題。 您可以存儲對另一個集合的引用,而不是手動將數據添加到每個文檔,然后需要在更改時更新。 這是mongoDB文檔的詳細信息。

Mongo中的參考文獻

然后,您需要做的就是更新參考集合,更改將反映在所有下游位置。

當我使用mongoose庫作為節點js時,它實際上創建了3個類似於在SQL中執行它的表,你可以使用對象id作為外鍵並在客戶端或后端豐富它們,仍然沒有加入但是你可以對ID進行'in'查詢然后以這種方式豐富對象,mongoose可以通過'填充'自動執行此操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM