Vicente Rodríguez

Oct. 31, 2016

Tutorial básico de MongoDB

MongoDB es una base de datos NoSql, esto quiere decir que no usa el lenguaje sql y en lugar de guardar los datos en tablas lo hace en documentos con un formato similar a JSON lo que la hace una base de datos muy rápida y fácil de usar.

Para instalar mongoDB aqui esta el link para linux, mac y windows.

Si usas mac te recomiendo usar Homebrew para instalarlo.

Comandos básicos

Crear una nueva colección

Para crear una nueva colección, lo que seria una tabla en base de datos sql, no necesitamos especificar sus atributos previamente, solo crear un nuevo documento.

Crearemos un nuevo documento para la colección usuarios.


usuario = { nombre: "mario", email: "mario@hotmail.com", edad: 22 }



db.usuarios.insert(usuario)

Como podemos ver en el código un nuevo documento se crea como si fuera un diccionario en javascript, para insertarlo en la colección tenemos que ejecutar:


db.usuarios.insert(usuario)

donde usuarios se puede cambiar por el nombre que quieras darle a la coleccion como empleados, admins, etc.

En mongoDB los documentos no siempre tienen que tener los mismos atributos, por ejemplo podemos insertar un nuevo usuario que solo tenga el nombre o un nuevo campo:


usuario = { nombre: "mario", escuela: "UNAM" }



db.usuarios.insert(usuario)

Buscar

Para buscar un documento dentro de una colección tenemos que escribir:


db.usuarios.find( { nombre: "mario" })

De esta manera podemos buscar un documento por el valor que tenga, email, edad, nombre, etc.

Esto nos regresara:


{ "_id" : ObjectId("5801285620a4c9ead401edb5"), "nombre" : "mario", "email" : "mario@hotmail.com", "edad" : 22 }

como podemos notar el objeto que nos regresa tiene un campo __id_ con un valor ObjectId(), siempre que creamos un nuevo documento se le asigna automáticamente un ObjectId este sirve para poder reconocer y buscar un documento mas fácilmente:


db.usuarios.find( { "_id" : ObjectId("5801285620a4c9ead401edb5") })

y nos regresara:


{ "_id" : ObjectId("5801285620a4c9ead401edb5"), "nombre" : "mario", "email" : "mario@hotmail.com", "edad" : 22 }

De esta manera es mas rápido buscar documentos que por sus otros campos.

Búsqueda avanzada

Cuando buscamos un documento a veces solo queremos ciertos campos, para lograr esto el código de find cambia:


db.usuarios.find({}, { nombre: 1, _id: 0})

De esta forma se muestran todos los documentos en la colección usuarios solo con el nombre y sin el id.

Para datos numéricos tenemos algunos query para obtener un valor mayor igual o menor al buscado.


db.usuarios.find( { edad: { $gt: 18 }})

De esta manera mongo regresa todos los usuarios que tengan edad mayor a 18.

Actualizar

Para actualizar un documento primero tenemos que buscar ese documento y asignarlo a una variable:


var usuario_actualizado = db.usuarios.findOne( { "_id" : ObjectId("57f5a032b92bbee80c81010f") })

con findOne solo buscara un documento, después podemos cambiar cualquier campo o agregar uno nuevo:


usuario_actualizado.edad = 17

usuario_actualizado.escuela = "UNAM"

Para guardar los cambios:


db.usuarios.save(usuario_actualizado)

Con eso ya tenemos actualizado nuestro documento.

Con save se puede crear o actualizar un documento, todo depende del documento que le pases.

Eliminar

Para eliminar un documento solo necesitamos el comando remove:


db.usuarios.remove( {"nombre": "mario"} )

Tenemos que tener cuidado ya que elimina a todos los documentos que tengan nombre "mario", lo recomendable es eliminar por __id_.