2017-10-16 66 views
0

理解何時以及爲什麼要在mongo數據庫中使用嵌入式文檔有點困難。如何避免嵌入式文檔不一致

想象一下,我們有三個集合:用戶,房間和預訂。

inconsistent embed

我有這樣的情況下幾個問題:

1)你如何更新嵌入文檔?應用程序開發人員有責任將kevin的所有實例作爲嵌入式文檔進行查找並進行更新嗎?

2)如果解決方案是使用文檔引用,那麼和關係數據庫連接一樣重?這僅僅是一個例子不適合Mongo的例子嗎?

一如既往讓我知道,如果我是一個完全白癡。

回答

1

Imho,你過分了。鑑於您的問題,使用案例是

  • 對於給定的預訂,哪個房間由哪個用戶預訂?
  • 對於給定的用戶,他或她的細節是什麼?
  • 給定房間提供多少張牀?

我會去用下面的模型房間

{ 
    _id: 1001, 
    beds: 2 
} 

用戶

{ 
    _id: new ObjectId(), 
    username: "Kevin", 
    mobile:"12345678" 
} 

並保留

{ 
    _id: new ObjectId(), 
    date: new ISODate(), 
    user: "Kevin", 
    room: 1001 
} 

現在預約概述,你可以有所有相關信息(「誰」,「何時」和「哪些」)只需q沒有任何開銷來回答你的使用案例中的第一個問題。在預訂詳細信息視圖中,無可否認,您必須執行兩個查詢,但它們閃電般快速且具有適當的索引,並且取決於您的技術也可以異步完成。請注意,我使用房間號碼作爲ID保存了一個索引。如何回答剩下的問題應該是顯而易見的。

因此,根據你原來的問題:嵌入是沒有必要在這裏,恕我直言。

相關問題