2012-12-02 18 views
5

mit Ich versuche, meine api zu planen, zum Beispiel:Mungo - mehrere Schema Einzel Sammlung

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

So habe ich separate Modelle für sowohl ‚Katze‘ und ‚Hund‘, wie sie einzigartig enthalten Eigenschaften, jedoch verwenden beide "Tier" Schema als ein Basis-Plugin.

Also meine Frage kommt, wo die Daten gespeichert werden, meine Optionen sind:

1) Single collection - speichern die beiden Katzen und Hunden in einer einzigen Sammlung, wird dies für immer Daten machen ‚/ Animals‘ relativ einfach mehrere Sammlungen mit einer einzigen Abfrage

2) - speichert die beiden Katzen und Hunde in einzelnen Sammlungen, dies wird die Datenspeicherung viel logischer machen, aber wenn Daten für ‚/ animals‘ bekommen wird mehrere Abfragen und Verkettung dieser Daten benötigen.

Gibt es noch andere Optionen, die ich verpasst habe, oder eine bevorzugte Vorgehensweise?

Dank

Antwort

0

Was mongodb schön ist, dass es Schema-weniger ist. Das klingt genau das, was du brauchst. Ich würde in Erwägung ziehen, nur die Ebene node-mongodb-native zu verwenden und alle Tiere in einer einzigen Sammlung zu speichern.

1

Die von Ihnen erwähnten Optionen sind die am besten geeigneten Ansätze für Ihr Problem.

Für Ihren speziellen Fall, wenn die einzigartigen Eigenschaften jedes Modell ist nicht so groß mit Weg gehen 1 speichern alle Daten in einer einzigen Sammlung und Abfrage leicht.

Andernfalls, wenn Ihre Modelle ein bisschen schwer sind und viele Eigenschaften haben, trennen Sie sie in verschiedene Sammlungen und fragen sie nach ihren jeweiligen Modellen ab. Dies scheint mehr Arbeit zu sein, aber zumindest gibt Ihnen mehr Abstraktion und Flexibilität, schwere Modelle zu manipulieren . Bedeutung gehen mit Option 2.

+0

Ich bin an der gleichen Stelle wie leepowell. Aber meine Fragen beziehen sich auf Ihre Antwort. Wenn ich mit # 1 gehen würde, was wäre deine Definition von "ist nicht so groß"? Ich weiß, dass Sie keine bestimmten fälligen Zahlen erhalten können. Aber gibt es eine Ballparknummer, wo du vorschlagen würdest mit # 2 über # 1 zu gehen? Ich entwickle eine Datenbank, die Elemente enthält, die für Fernunterricht-Kursobjekte spezifisch sind, die sowohl implementiert als auch entwickelt werden. Oder ist der 'Breakpoint' zwischen # 1 und # 2 eine Art Entwicklervorliebe? –

Verwandte Themen