MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

documento incorporato vs tipo di dati hash in mongoid

Mongoid archivia i documenti incorporati e gli attributi Hash più o meno allo stesso modo a livello di database. È normale quando si lavora con mongoid per dichiarare i propri campi nei modelli, quindi se si dispone di una struttura nidificata è normale creare un documento incorporato. Poiché MongoDB è mongoid senza schema, è necessario che tu dichiari i campi per presentarli nello stesso tipo di API di ActiveRecord. Ma per alcuni casi d'uso un attributo Hash offre un po' più di flessibilità. Lo svantaggio di tale flessibilità è che sei limitato all'API Hash, quindi non ottieni metodi di attributo generati automaticamente e non puoi incapsulare la logica aziendale nel modo in cui potresti fare normalmente all'interno di una classe modello.

Ad esempio, supponiamo di avere un modello di Questionario in cui è necessario memorizzare molte sezioni contenenti molte coppie domanda-risposta. Se un requisito fondamentale del sistema è che l'amministratore sia in grado di impostare nuove sezioni e domande, non sarebbe facile modellare le risposte come un normale documento incorporato contenente campi espliciti per ciascuna domanda. Per questo genere di cose un hash potrebbe avere più senso.

Non so quali siano i tuoi requisiti specifici, ma come guida approssimativa direi che quando lavori con uno schema fisso stick con un documento incorporato, ma quando hai bisogno di un modello aperto, considera gli attributi Hash.