MongoDB, NoSQL

MongoDB: Comandos básicos

MongoDB es una base de datos de documentos con la escalabilidad y flexibilidad que quieres más las consultas e indices que necesitas.

Cheat Sheet

Crear base de datos
use myDB                                   
Crear colección con datos
db.collection.insert (...)
Obtener todos los datos de una colección
db.collection.find() 
Obtener todos los datos de una colección y mostrarlos versión impresión              
db.collection.find().pretty()   
Obtener un dato de una colección y mostrarlo versión impresión 
db.collection.findOne()   
Remover registro usando un parámetro
db.collection.remove({"Parametro" : "Value"}) 
Actualizar registro usando un parámetro
db.collection.update({"Parametro" : "Value"},$set:{...}) 
Borrar colección
db.collection.drop()                
Obtener registro y columnas específicas usando un parámetro
db.collection.find({"Parametro":"Value"},{"Parametro":1,_id:0}) 
Obtener registro filtrado por valor del documento anidado (hijo)
db.collection.find({'Parametro.Subparametro': "Value"}) 
Obtener subdocumento 
db.collection.find({"Parametro":"Value",'Table.Data.id':"1"},{_id:0,'Table.$':1})

Ejemplos:

  • Crear una base de datos, una colección y consultar la información creada, un id es generado automáticamente para cada documento sino se específica “_id”.
Establecer nueva BD, no se crea hasta tener al menos una colección
use myDB
Crear colección e insertar registro
db.newCollection.insert({"Name":"My Name","Age":123,"Subdocument":[{"Texto":"Valor"},{"Texto2":"Valor2"}]})
Consultar la información insertada
db.newCollection.find()

MongoDBExample1

  • db.xxx.find().pretty() y db.xxx.findOne() muestran la misma información si hay un solo registro, si hay más de un registro findOne trae el primero y find().pretty los trae todos en formato impresión.

MongoDBExample2

  • Para remover documentos podemos utilizar cualquier campo como parámetro:
Insertar nuevo documento (No se requiere que los campos sean
los mismos en todos los documentos de una colección)
db.newCollection.insert({"Name":"Name2","Age":66,"OtroCampo":"campo2"})
db.newCollection.find()
Eliminar documento usando el campo Name
db.newCollection.remove({"Name":"Name2"})
db.newCollection.find()

MongoDBExample3

  • Cuando utilizamos la secuencia update, podemos actualizar el campo de un documento o agregar un campo nuevo.
db.newCollection.update({"Age":{$eq:123}},{$set:{"Name":"My Name update","Nuevo":"New Field"}},{multi:true})

MongoDBExample4

  • Obtener uno o varios campos de un documento específico:
db.newCollection.find({"Name":"My Name update"},{"Age":1,_id:0})

MongoDBExample5

  • Para obtener un documento basado en un subdocumento:
Insertar otro documento con el Subdocument
db.newCollection.insert({"Name":"My Name 2","Subdocument":[{"Texto":"Valor3"},{"Texto2":"Valor4"}]})
Buscar el documento que tiene el Subdocument Texto con valor "Valor3"
db.newCollection.find({"Subdocument.Texto":"Valor3"})

MongoDBExample6

  • Consultar solamente el valor del subdocumento
db.newCollection.find({"Subdocument.Texto":"Valor3"},{_id:0,"Subdocument.$":1})

MongoDBExample7

  • Eliminar colección.
db.newCollection.drop()

MongoDBExample8

MongoDB, NoSQL

Instalar MongoDB windows

Para instalar MongoDB primero tenemos que descargarlo desde la página oficial: Mongo Download Page

Si tenemos dudas de cual versión de MongoDB necesitamos, si es 32 o 64 bits, podemos ejecutar los siguientes comandos para la versión de Windows y la arquitectura.

wmic os get caption
wmic os get osarchitecture

Ejecuta el archivo descargado, da permiso de ejecución y realiza la instalación completa recomendada, si quieres instalar MongoDB en otra ruta puedes escoger la opción Custom.

MongoDBInstallComplete

Cuando hayamos finalizado la instalación, tendremos lo siguiente:

MongoDBFolder

Luego creamos la carpeta

C:\data\db

Ejecutamos el servidor de MongoDB

mongod.exe

MongoDBServer

Por defecto el servidor ejecuta en el puerto 27017.

Para conectarnos a Mongo podemos usar

mongo.exe

mongoCMD

O podemos instalar y usar RoboMongo:

RoboMongo