2014-10-26 191 views
0

假設我正在製作一個使用MongoDB數據庫的社交應用程序,並且我希望用戶能夠互相交流。當然友誼是一種相互關係,用戶ID是整數。最好的方法是什麼?相互依賴MongoDB

  1. 每個用戶都有一個好友ID列表。每次創建/切斷債券時,兩個用戶的名單都必須更新。

  2. 創建包含2個用戶ID的連接表'friendship'。每次創建債券時,我都必須創建兩個條目。 1-> 2和2-> 1

  3. 由於沒有。 2,但始終只使用rule:lower_usr_id - > higher_usr_id創建一個綁定。假設有很多人和友誼。它不會節省很多時間和空間嗎?

+0

要求「最好」的方法是徵求意見。有多種方法可以解決這個問題。另外:你在問關於MongoDB的問題,但是談論了連接表(關係數據庫的概念)。所以這個不清楚。如果這涉及* any *數據庫技術,那麼解決方案將會很多。 – 2014-10-26 18:56:40

+0

通過連接表,我只是指僅包含兩個用戶ID的對象集合,所以是的,它將像關係數據庫一樣工作。 關於'最好'的方法:我認爲一些解決方案可能比其他解決方案表現得更好。 – Zibi 2014-10-26 19:02:47

回答

1

這聽起來像你對MongoDB的工作方式還不太清楚。聯接不是在MongoDB中出現的,如果你想像關係數據庫那樣使用MongoDB,那麼你做錯了。

我對MongoDB的專家,但我相信有模擬一個一對多的關係的兩種常用方法:

  1. 裏面嵌入另一個
  2. 使用引用一個文件

將文檔嵌入另一個文檔是有意義的,其中父文檔在某種意義上「擁有」該子文檔。例如,在博客應用程序的上下文中,評論屬於帖子,所以將帖子嵌入帖子中可能有意義。

對於你的用例,我不認爲這是合適的,因爲關係是在同一類型的對象之間。因此,將友誼記錄爲對同一集合中另一個對象的引用是有意義的。

查看this link瞭解更多詳情。