sql >> Base de Datos >  >> NoSQL >> MongoDB

documento incrustado vs tipo de datos hash en mongoid

Mongoid almacena documentos incrustados y atributos Hash prácticamente de la misma manera a nivel de base de datos. Es normal cuando se trabaja con mongoid para declarar sus campos en sus modelos, por lo que si tiene una estructura anidada, es normal crear un documento incrustado. Debido a que MongoDB es mongoid sin esquema, necesita que declare campos para presentarlos en el mismo tipo de API que lo hace ActiveRecord. Pero para algunos casos de uso, un atributo Hash le brinda un poco más de flexibilidad. La desventaja de esa flexibilidad es que está limitado a la API Hash, por lo que no obtiene métodos de atributos generados automáticamente y no puede encapsular la lógica comercial de la forma en que lo haría normalmente dentro de una clase modelo.

Como ejemplo, suponga que tiene un modelo de Cuestionario en el que necesita almacenar muchas secciones que contienen muchos pares de preguntas y respuestas. Si un requisito clave del sistema es que el administrador pueda configurar nuevas secciones y preguntas, entonces no podrá modelar fácilmente las respuestas como un documento incrustado normal que contenga campos explícitos para cada pregunta. Para ese tipo de cosas, un Hash podría tener más sentido.

No sé cuáles son sus requisitos específicos, pero como guía aproximada, diría que cuando trabaja con un esquema fijo, se adhiere a un documento incrustado, pero cuando necesita un modelo abierto, considere los atributos Hash.