en el caso de los esquemas, como se pueden definir mejor?, el profesor los definió pero no es que se usen obligatoriamente no? osea lo d...

Pregunta de la clase:
Ejecución de queries
Carlos Martinez

Carlos Martinez

Pregunta
studenthace 6 años

en el caso de los esquemas, como se pueden definir mejor?, el profesor los definió pero no es que se usen obligatoriamente no? osea lo digo porque, al momento de crear un nuevo curso lo hace mediante postman y la estructura del json viene definida como se había acordado anteriormente, pero si uno quiere, la puede cambiar sin problemas no?

mi pregunta es, hay alguna manera de poner un poco de “orden” al momento de definir cual será nuestra estructura(esquema) de los documentos??, tal vez con un

example.json
en el cual definimos como son las estructuras de los documentos? para de esa manera dejarle claro a otros desarrolladores como esta definida la estructura.

todo esto lo pregunto porque estaba viendo un tutorial en youtube en donde en vez de usar el modulo nativo de mongodb para nodejs usaban una librería llamada

mongoose
, y había una parte en la cual se definía el esquema con mongoose donde incluso se ponía que tipo de dato se esperaba, esto no lo he visto aún en el modulo nativo de mongodb para nodejs.

y la duda me surge debido a que , ¿ no se supone que mongodb es una base de datos sin esquemas ? , en la cual los documentos lo podemos ir guardando con la estructura que queramos no importa si la cambiamos, asi que, para retomar mi pregunta… , cual sería la mejor manera de mantener o por lo menos tratar de mantener un esquema para cierto tipo de documentos json ? , de tal manera que yo en un futuro u otros desarrolladores puedan ver facilmente como estan estructurados los documentos.

espero alguien me saque de dudas jeje, saludos y gracias de antemano

4 respuestas
para escribir tu comentario
    Johan Avila

    Johan Avila

    studenthace 5 años

    Justamente lo que quiere lograr mongo es no iponerte un esquema para que puedas crecer tu app si asi lo requieres, mongo es una bases de datos muy flexible pero no por eso es meter datos a lo loco. Para evitar una sopa de documentos y collections puedes agregar un schema desde otra capa de tu aplicacion, de hecho es muy buena practica manejar mongo con un schema en otra capa de tu app

    Marcos Mella

    Marcos Mella

    studenthace 6 años

    Estoy con la misma incertidumbre, leyendo información de otros sitios, con node.js el 90% de los casos usa mongoose.. así que supongo voy por ese lado, implementando schema para que otros desarrolladores sepan de la estructura a simple vista.

    Albert Ramirez

    Albert Ramirez

    teacherhace 6 años

    Hola Carlos, es una buena pregunta. Una forma de "poner un poco de orden" en MongoDB de forma nativa es empleando una funcionalidad que se encuentra disponible desde Mongo 3.6 llamada schema validation

    De esa manera se pueden definir campos obligatorios dentro de un documento a nivel de colección, ahora MongoDB es schema less debido a que no tienes la obligación de definir un schema para guardar tus documentos sin embargo si tu caso de uso lo requiere puedes hacerlo.

    Anibal Rojas

    Anibal Rojas

    teacherhace 6 años

    Muy interesante tu pregunta. Si tienes las necesidad de poner un "poco de orden" entonces muy posiblemente en realidad la solución a tu problema es un RDBMS, tecnología muy sólida con muchísimos años en el mercado. Y si una parete de tu problema aún requiere de schemaless documents puedes utilizar soporte para columnas JSON como por ejemplo lo ofrece PostgreSQL, con lo que puedes incluso definir índices sobre el las propiedas del documento para optimizar queries.

Curso Básico de MongoDB

Curso Básico de MongoDB

Domina las bases de MongoDB, el motor de NoSQL que provee alta capacidad de almacenamiento. Optimiza tus procesos gracias a la velocidad de consulta y aprovecha la escalabilidad de este tipo de bases de datos en tus proyectos.

Curso Básico de MongoDB
Curso Básico de MongoDB

Curso Básico de MongoDB

Domina las bases de MongoDB, el motor de NoSQL que provee alta capacidad de almacenamiento. Optimiza tus procesos gracias a la velocidad de consulta y aprovecha la escalabilidad de este tipo de bases de datos en tus proyectos.