2012-12-02 15 views
5

sto cercando di pianificare il mio api, ad esempio:Mongoose - più schemi utilizzando un'unica collezione

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

Così, mi hanno modelli separati per entrambi 'cat' e 'cane', in quanto contengono unico proprietà, tuttavia entrambi utilizzano lo schema "animale" come plug-in di base.

Quindi la mia domanda viene su dove memorizzare i dati, le mie opzioni sono:

1) Single Collection - memorizzare sia cani e gatti all'interno di una singola collezione, questo renderà ottenere i dati per '/ animali' relativamente facile con una singola query

2) Raccolte multiple: memorizza sia i cani che i gatti nelle singole raccolte, questo renderà l'archiviazione dei dati molto più logica, tuttavia quando i dati per "/ animali" richiederanno più query e concatenazione di tali dati.

Ci sono altre opzioni che ho perso o un approccio preferito?

Grazie

risposta

0

Che cosa è bella di MongoDB è che si tratta dello schema-less. Sembra proprio quello di cui hai bisogno. Vorrei prendere in considerazione l'utilizzo del semplice node-mongodb-native e memorizzare tutti gli animali in un'unica raccolta.

1

Le opzioni che hai citato sono gli approcci più appropriati per il tuo problema.

Per il caso specifico se le proprietà uniche di ciascun modello non sono così grandi andare con il modo 1 memorizzare tutti i dati in una singola raccolta e interrogare facilmente.

Altrimenti se i tuoi modelli sono un po 'pesanti e hanno molte proprietà li separano in raccolte diverse e li interrogano con i loro rispettivi modelli. Questo sembra più lavoro da fare ma almeno ti darà più astrazione e flessibilità per manipolare i modelli pesanti . Significato andare con l'opzione 2.

+0

Sono allo stesso punto di Leepowell. Ma le mie domande riguardano la tua risposta. Se dovessi andare con # 1, quale sarebbe la tua definizione di "non è così grande" ?? So che non è possibile ottenere specifici elementi enumerabili. Ma c'è un numero di ballpark in cui suggeriresti di andare con # 2 oltre # 1 ?? Sto sviluppando un DB che conterrà elementi specifici degli oggetti del corso di apprendimento a distanza, sia distribuiti che in fase di sviluppo. Oppure il "punto di interruzione" tra le opzioni # 1 e # 2 di una preferenza per gli sviluppatori? –

Problemi correlati