top of page

6 - Inserciones en una BD de mongoDB

mongodb-logo.png

Como se escribió previamente mongoDB utiliza el formato JSON para trabajar con la BD (tal como se muestra en el gráfico de la derecha).

Es muy importante que tengamos en cuenta que no existen como en el modelo relacional tablas y registros, sino que debemos referirnos a ellos como colecciones y documentos respectivamente (tal como se muestra en el gráfico de abajo).

mongodb000000.PNG
mongodb00.PNG

Crear una BD con robomongo

Antes de empezar debemos crear la BD, lo podemos hacer de la forma que vimos previamente, pero ahora para practicar lo vamos a hacer utilizando la herramienta GUI Robo 3T.

Lo primero que tenemos que hacer es trabajar con la conexión a la BD que definimos previamente (tal como se mostró en 5 - Herramientas GUI de mongoDB).

Como se puede observar en nuestra conexión no tenemos otras BD mas que las del Sistema.

Hacemos clic con el botón derecho la conexión (en mi caso es "MiConexionLocal") y elegimos "Create Database".

mongodb38.png

Luego escribimos el nombre que le queremos asignar, en este caso "facultad" y hacemos clic en el botón "Create"

flechaabajo.png
mongodb39.PNG

Y podemos observar que la BD se ha creado

mongodb40.PNG

Insertar una colección

Podemos insertar la colección a través del Shell, como hicimos previamente o yendo a la BD (facultad => Collections ==> Create Collection..)

mongodb41.PNG

Y agregamos el nombre de la nueva Colección

flecha.png
mongodb42.PNG
flechaabajo.png

Insertar un documento

Hay varias formas de insertar documentos, una de ellas es escribirlas con la herramienta GUI. La ventaja de hacerlo de esta forma es que la herramienta nos avisa los errores que cometemos.

Nos posicionamos en la colección (en este caso alumnos, hacemos clic con el botón derecho) y luego seleccionamos "Insert Document..". Fijémonos también que tiene otras opciones que veremos después, tales como "View Documents", Update, Remove, ... etc, opciones que analizaremos después.

flechaabajo.png
mongodb43.png

En la cabecera nos indica que estamos accediendo a nuestro equipo ("localhost"), en el puerto "27017", en la BD "facultad" y en la colección "alumnos".

En esta colección estamos insertando un único documento con Lu = 100 (numérico), Nombre = José, Fecha de Ingreso = 03/03/18, y un array de documentos del campo Grupo formado por Mónica (Lu = 200) y Pedro (Lu = 300)

Nota: los tipos de datos permitidos son los tipos de datos de javascript. 

mongodb44.PNG

En la parte inferior podemos ver un botón "Validate", con el cual podemos verificar si la escritura de nuestro documento es correcto. Si es así, debemos hacer clic en el botón "Save" y nuestro documento se graba.

Insertar documentos a través del Shell de Robo 3T

Otra forma interesante que nos provee Robo 3T es a través del Shell del mismo, el cual es el Shell de mongoDB que habíamos visto previamente.

mongodb45.png

Para ello nos posicionamos en la BD (en nuestro caso facultad), hacemos clic con el botón derecho y seleccionamos Open Shell.

flechaabajo.png
mongodb46.PNG

Y al hacer esto nos aparecerá el siguiente Shell:

Podemos trabajar este Shell de la misma forma que el Shell de mongoDB, con las ventajas de guiarnos en la escritura, indicándonos las funciones de javascript, tipo de datos, identado, etc.

Aquí se observa que insertamos a la alumna "Florencia".

flechaabajo.png
mongodb47.PNG

Para ejecutar solo debemos hacer clic en el botón verde, y si no hubo errores, en la parte inferior de la pantalla nos muestra el mensaje de que la operación se realizó correctamente.

Importante: en este caso hemos agregado dos documentos u objetos, pero deben observar que no tienen la misma estructura, el primer documento llamado "José" tiene un grupo formado por Mónica y Pedro, mientras que el objeto "Florencia" tiene un grupo formado solo por "Juan".

Otra diferencia grande es que el primer documento tiene un campo llamado "Lu" y el segundo se llama "LU", mongoDB detecta esta diferencia y para el son campos distintos como se verá más adelante.

También hay otro error (aunque este es lógico) y es que ingresamos mal la Lu, no debería haber dos alumnos con Lu = 400, este es un error que subsanaremos más adelante.

Esta es una diferencia grande entre las BD Relacionales, en la cual la información se maneja por tablas, las cuales tienen una estructura definida y las BD NoSQL como mongoDB donde los documentos no tienen una estructura estática, cada objeto puede tener una estructura diferente (uno o mas campos).

Visualización de Documentos

El método que se utiliza en find(). En el Shell de mongoDB observamos que al escribir db.alumnos.find() se visualiza los documentos, pero no en forma ordenada o como nosotros quisieramos.

mongodb48.PNG
mongodb49.PNG

Si queremos que se visualice correctamente deberíamos escribir pretty() y obtendríamos los resultados que se muestran en la imagen.

Importante: deben observar que mongoDB automáticamente creó un atributo = "_id" y le asignó una clave propia.

Otra forma de visualizar documentos es a través de la herramienta GUI robo 3T, posicionándonos en la colección y haciendo clic en "View Documents" como se mostró arriba. Haciendo esto veríamos la siguiente pantalla.

mongodb50.PNG

Anteriormente nos mostraba todos los documentos porque no le habíamos puesto ninguna condición de filtrado, si queremos que nos muestre un documento en particular, debemos agregar la condición dentro de find, en este caso es Nombre: "Florencia" y solo nos va a mostrar ese objeto.

mongodb51.PNG

Recordemos que en el Shell de mongoDB podemos usar funciones de javascript, en este caso observemos que podemos usar un "forEach", el cual nos barre toda la colección de "alumnos" y nos muestra el resultado por pantalla.

Hay un pequeño error al mostrar la Lu de "Florencia" (nos muestra como resultado "undefined" porque en este caso le pedimos que muestre "alumnos.Lu" y este documento no tiene ese campo (el campo se llama "alumnos.LU").

mongodb52.PNG
bottom of page