2012-12-02 75 views
5

我想我的計劃API,例如:貓鼬 - 多種模式使用單個集合

/animals   // returns all animals 
/animals/dogs  // returns all dogs 
/animals/cats  // returns all cats 
/animals/dogs/:id // returns dog 

所以,我有兩個「貓」和「狗」不同的模型,因爲它們將包含獨特的屬性,但是都使用「動物」模式作爲基礎插件。

所以我的問題來自何處來存儲數據,我的選擇是:

1)單個集合 - 存儲單個集合內都貓狗,這將使獲取數據爲'/動物比較容易與單個查詢

2)多個集合 - 存儲貓和狗在個人收藏,這將使數據存儲更合乎邏輯,但是當獲取'/動物'的數據將需要多個查詢和串聯的數據。

有沒有其他的選擇,我錯過了,或首選的方法?

謝謝

回答

0

mongodb有什麼好處是它是無模式的。聽起來像這正是你需要的。我會考慮使用簡單的node-mongodb-native,並將所有動物存儲在一個集合中。

1

您提到的選項是針對您的問題最合適的方法。

針對您的特殊情況下,如果每個模型的獨特性能心不是那麼大去路1存儲的所有數據在一個單一的收集和查詢輕鬆。

否則,如果你的模型有點沉重,並有很多屬性將它們分成不同的集合,並通過它們各自的模型查詢它們。這似乎還有更多工作要做,但至少會給你更多的抽象和靈活性來操縱重型模型。 含義與選項2

+0

我和leepowell一樣。但我的問題是關於你的迴應。如果我要去#1,那麼你對「不是那麼大」的定義是什麼?我知道你無法得到具體的ennumerable元素。但是有沒有一個球場號碼,你會建議去#1超過#1?我正在開發一個數據庫,其中將包含特定於遠程學習課程對象的元素,這些對象都已部署並正在開發。或者是#1和#2排序的開發者偏好之間的「斷點」? –