2013-02-19 64 views
0

因此,我一直在觀看this視頻以瞭解MongoDB數據建模。在一對多的關係,揚聲器談論三種不同類型:嵌入式數組ID和嵌入式數組在MongoDB中的區別

  1. 嵌入式陣列/數組鍵:在一個特定的文件,你將有一個場,這將是一個數組引用其他文件(例如,blog_posts在用戶文檔中的屬性將存儲用戶創建的博客文章的所有ID)
  2. 嵌入式樹:與其他事物引用數組不同,我們在文檔中包含完全嵌入的文檔。
  3. 標準化:你有兩個集合和彼此之間的引用。

那麼,嵌入式數組鍵和標準化類型之間的區別是什麼?嵌入式數組是否也在引用另外兩個集合?

回答

1

區別很簡單(不幸的是在視頻中有點混淆)。

想象一下建模博客文章(Post)和評論(Comment)。

  1. 嵌入式陣列:Post文檔包含所有Comment文檔的所有ID的數組。 Comment存儲在單獨的文檔(和/或集合)中。
  2. 樹:Post文件包含嵌入式Comment s。它們不存儲在不同的文檔中或存儲在它們自己的集合中。雖然這表現非常好,但BSON文檔的大小限制爲16MB,這使得這可能更難以處理。
  3. 標準化:A Post文檔和Comment s分開存儲。然而,在這種情況下的Comment文檔具有回到Post的外鍵類似參考。因此,它可能有一個名爲postId的字段。它會引用與Comment相關的Post。該模式與#1不同,因爲Post文檔不包含Comments的列表。所以,雖然這個選項使得評論的數量基本上是無限的/無限制的,但是它可以使檢索評論更加低效,而不需要建立特定的索引(如postId,commentDate可能是有用的)。