簡體   English   中英

MongoDB多對多關系

[英]MongoDB Many-to-Many relationship

我是MongoDB的新手,我正嘗試學習NoSQL風格的數據庫,並想知道,我將如何在MongoDB命令行中編寫多對多關系。 例如,餐館可以從一個或多個用戶那里接收評論,而這些用戶中的每個用戶都可以對一個或多個餐館進行評論。

餐廳:評論ID,用戶ID,評論

用戶:評論ID,餐廳ID,評論

我們將使用唯一的ID進行編碼嗎?

如果您的系統假設要以不同類型的關系(聯接)執行查詢,則建議重新設計它並轉到相對數據庫。

如果是Mongo,則必須手動管理關系。 您可以使用DBRef 但我強烈建議您避免使用它們。 在許多框架中(例如,Spring Data),DBRef可能會導致非最佳子查詢(它會針對結果集中的每個DBRef在一個周期內執行單個子查詢)。

在您的情況下,我建議在每個實體中存儲相關的主鍵(ID)列表,並根據需要由您自己的IF根據列表進行查詢。

使用NoSQL,主要要看的是您期望如何查詢這些數據。 您希望盡可能避免關聯,並且通常希望將數據封裝在單個文檔中。 多對多關系通常會被去甲化,而AB關系通常會以B作為A內的屬性而結束。

查看示例中的<->餐廳comments ,在添加新評論時,在要推送到的restaurants集合中有一個comments數組可能很有意義。 假設沒有餐廳有太多評論(肯定可以解決!),這將使您能夠在單個快速查詢中獲得所需的所有信息。

如果您還希望按用戶查找評論,則可以對每個用戶的評論進行非規范化,然后將其存儲在用戶身上,或者僅存儲該用戶評論過的餐廳的ID。

與使用傳統的關系數據庫進行存儲相比,以這種方式存儲數據無疑是更多的工作,並且靈活性較低,但是它確實允許快速查詢和可擴展的體系結構

暫無
暫無

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

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