es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo almacenar opciones de selección estáticas en MongoDB? ¿Múltiples documentos o un solo documento con un arreglo incrustado?

Tengo una matriz de objetos como la siguiente como entrada para una lista de casillas de verificación:

[
{id: 1, name: 'abc', icon: 'icon_1'},
{id: 2, name: 'def', icon: 'icon_2'},
{id: 3, name: 'ghi', icon: 'icon_3'},
...
{id: 126, name: 'xyz', icon: 'icon_364'},
]

Tengo algunas matrices más de este tipo. Para países, ciudades, tipos de usuario, … todas estas serán valores constantes.

Cuando se trata de almacenar y leer estas matrices estáticas en MongoDB, ¿cuál de las siguientes opciones es la correcta con mejor rendimiento?

  1. Crear una colección para cada matriz e insertar cada objeto de la matriz como un documento. En este caso, para obtener la lista de opciones para las casillas de verificación, tengo que leer los 126 documentos.
  2. Crear una única colección llamada “Global” e insertar cada documento para cada matriz estática.


{_id: ObjectId('12345'), key: 'checkboxes_list', values: [my_checkbox_options_list]}
{_id: ObjectId('6789'), key: 'countries', values: [my_countries_list]}
{_id: ObjectId('5985'), key: 'usertypes', values: [my_usertypes_list]}

En este caso, ¿para leer la lista de países, solo necesito leer un documento usando collection.find({key: 'countries'})?

¿Cuál de los enfoques es el correcto? ¿Cómo manejas estas listas de valores constantes con MongoDB? Para la lista de tipos de usuario, hay un máximo de 5 registros. ¿Realmente necesito crear una colección separada para almacenar solo 5 registros/documentos?

En SQL, sí creamos una tabla separada para el tipo de usuario. ¿Pero es realmente bueno para MongoDB/NoSQL?

Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en arrays, mongodb, static y datamodel, recomendaría la segunda opción de crear una sola colección llamada “Global” e insertar cada documento para cada array estático.

    Este enfoque proporcionará un mejor rendimiento, ya que solo necesitamos leer un documento para obtener la lista de opciones para casillas de verificación u cualquier otro array estático. Crear una colección separada para cada array resultará en más sobrecarga y complejidad innecesarias.

    Para la lista de tipos de usuario, como solo hay cinco registros, no es necesario crear una colección separada. Podemos simplemente insertar los cinco documentos como valores para la clave “usertypes” en la colección “Global”.

    En MongoDB/NoSQL, no necesariamente tenemos que seguir el mismo enfoque que con SQL y crear tablas/colecciones separadas para todo. Depende de la complejidad y tamaño de los datos. En este caso, tener una sola colección para los arrays estáticos tiene más sentido y es más eficiente.

Comments are closed.