Qual è un modo ragionevole per strutturare le relazioni in MongoDB

5

Sto anche usando Node - che non mi è più familiare - se gli articoli / libri / tutorial riguardavano anche questo - questo aiuterebbe ancora di più.

Vengo da un background prevalentemente MySQL - ma in questa API, tutti i dati saranno serviti come JSON - quindi a prima vista, usare Mongo ha molto senso (potrei sbagliarmi). Tuttavia, un modello che non sono stato in grado di avvolgere la mia mente è un modello relazionale. E.B. Object has many Assets .

Per utilizzare alcuni esempi con cui la maggior parte delle persone avrebbe familiarità, supponiamo di voler provare a fare qualcosa di simile:

  • Seleziona un post del blog e tutti i suoi commenti. o
  • Seleziona una galleria fotografica e tutte le sue foto

È semplice come archiviare una chiamata all'interno delle mie risorse in questo modo?:

Photo {
    __id: 5,
    content: '...',
    gallery_id: 9 
}

Eseguendo un .find({ gallery_id: 9 }) ?

So che questo funziona , ma è la migliore pratica? Sono molto nuovo per Document Database e non ho visto molto su questo particolare argomento.

    
posta drewwyatt 27.08.2013 - 18:29
fonte

2 risposte

4

Per coincidenza, sono in procinto di pensare attraverso una nuova applicazione usando Node e MongoDB.

Ho usato leggermente MongoDB in passato e ho trovato la modellazione dei dati della documentazione di MongoDB per essere un ottimo punto di partenza L'approccio che descrivi, memorizzando un riferimento nel genitore e utilizzando una seconda ricerca per ottenere gli elementi di riferimento, è un ottimo modo per procedere, se si sceglie di utilizzare riferimenti piuttosto che incorporare direttamente i figli nel genitore oggetto.

Tuttavia, potrebbero esserci alcuni modi migliori per farlo. Ho cercato di utilizzare Mongoose come Object Document Mapper (ODM). È l'ODM ufficialmente supportato per Nodo per la documentazione di MongoDB

.

Fornisce una serie di funzioni utili, in particolare se si sta costruendo un modello abbastanza complesso all'interno dell'applicazione, compresi gli pseudo-join che utilizzano il popolare funzione. La capacità della popolazione offre un approccio più strutturato alla gestione dei riferimenti che consente il recupero di genitori e figli in un unico passaggio.

    
risposta data 29.08.2013 - 04:21
fonte
6

MongoDB relazioni sui modelli utilizzando i riferimenti .

To normalize data, store references between two documents to indicate a relationship between the data represented in each document.

In general, use normalized data models:

  • when embedding would result in duplication of data but would not provide sufficient read performance advantages to outweigh the implications of the duplication.
  • to represent more complex many-to-many relationships.
  • to model large hierarchical data sets.
    
risposta data 28.08.2013 - 18:55
fonte

Leggi altre domande sui tag