Mongoose - 使用单个集合的多个模式

时间:2012-12-02 08:38:46

标签: node.js mongodb schema mongoose

我正在尝试计划我的api,例如:

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

所以,我有'cat'和'dog'的单独模型,因为它们将包含独特的属性,但是它们都使用'animal'模式作为基础插件。

所以我的问题是关于存储数据的位置,我的选择是:

1)单一收集 - 将猫和狗存储在一个集合中,这将使得通过单个查询获得'/ animals'的数据相对容易

2)多个集合 - 将猫和狗存储在单独的集合中,这将使数据存储更加合理,但是当获取“/ animals”的数据时,需要多次查询并连接该数据。

我还有其他选择,或者首选方法吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您提到的选项是解决您问题的最合适方法。

对于您的特定情况,如果每个模型的唯一属性不是那么大顺便1 将所有数据存储在单个集合中并轻松查询。

否则,如果你的模型有点沉重,并且有很多属性将它们分成不同的集合并通过它们各自的模型进行查询。这个似乎还有很多工作要做,但至少会给你更多的抽象和灵活性来操纵重型模型。 含义为选项2

答案 1 :(得分:0)

mongodb的优点在于它没有架构。听起来就像你需要的那样。我会考虑只使用普通node-mongodb-native,并将所有动物存储在一个集合中。