MongoDB: Primeros Pasos.

Qué es mongoDB?

MongoDB es un sistema de base de datos de código abierto y basado en documentos que provee alto rendimiento, esquema flexible, alta disponibilidad y escalamiento automático.

Base de datos basada en documentos.

Un registro en mongoDB es un documento, que esta compuesto de una estructura de pares de campos y valores. Los documentos en MongoDB son similares a Objetos JSON.

Entre los valores de un campo se puede incluir otro documento, un arreglo o un arreglo de documentos.

MongoDB pertenece al grupo de Base de Datos NoSQL.

Ejemplo de un Documento:

{
  "name" : "John Doe",
  "age" : 12,
  "status" : "A" ,
  "groups" : ["news", "sports"]
}
Instalación de MongoDB

MongoDB es multiplataforma, por lo que puede ser instalado en Linux, MacOS y Windows.

Pasos para instalar MongoDB en Ubuntu Linux:

  • Importar la clave pública usada por el administrador de Paquetes:
sudo app-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927  
  • Crear la lista de archivos para MongoDB:

En Ubuntu 12.04:

echo "deb http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list  

En Ubuntu 14.04:

echo "del http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
  • Refrescar la base de datos de paquetes local:
sudo apt-get update  
  • Instalar MongoDB
sudo apt-get install -y mongodb-org  



Desde MacOS con Homebrew:

brew update  
brew install mongodb  



Desde Windows:

Descargas el instalador desde la pagina oficial de MongoDB y luego Next Next Next.

Operaciones Básicas

MongoDB contiene en su core un framework javascript llamado v8 el cual fue creado por google.

Las operaciones son como funciones de Javascript, así que llamaremos al objeto base de datos db y crearemos una nueva propiedad (Colección) o lo que se asemejaría al concepto de tabla con el nombre de usuarios que usaremos para los siguientes ejemplos:

1. Creación de Registros .insert()

Sintaxis:

db.collection.insert(  
   <document or array of documents>,
   {
     writeConcern: <document>,
     ordered: <boolean>
   }
)

writeConcern: Es un parámetro opcional. Este parámetro describe el conocimiento requerido por mongoDB para operaciones de escritura a una instalación autónoma, a un Replica Set o un Shared Cluster. En Sharded Cluster las instancias mongos pasaran el writeConcern a los shards.

ordered: Es un parámetro opcional y booleano. Si este parametro se envia con true se realiza un insert ordenado de documentos.

Si es false se realiza un insert desordenado de los documentos.

El default para este parametro es true.

> db.usuarios.insert({
"username" : "brain",
"password" : "12345",
"roles" : ["author"]
"status" : true 
});

Otra forma de hacerlo es:

> var user = {
"username" : "brain",
"password" : "12345",
"roles" : ["author"]
"status" : true
}

> db.usuarios.insert(user);

2. Búsqueda de Registros .find()

Sintaxis:

db.collection.find(query, projection)  

query: Este parámetro es opcional, de tipo documento y se utiliza para especificar el criterio de búsqueda.

projection: Este parámetro es opcional, de tipo documento y se utiliza para especificar los campos que serán retornados.

Ejemplo:

> db.usuarios.find({"username":"brain"}, {"roles":1});

Resultado:

{ "_id" : ObjectId("5232344a2ad290334521435b"), "roles" : ["author"] }

3. Modificación de Registros .update() Sintaxis:

db.collection.update(  
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

query: Este parámetro es requerido, de tipo documento y se utiliza para especificar el criterio de búsqueda.

update: Este parámetro es requerido, de tipo documento y se utiliza para especificar las modificaciones a aplicarse.

upsert: Este parámetro es opcional, de tipo booleano. Cuando se envía true, se creara un documento nuevo en caso de que ningún documento coincida con el criterio de búsqueda. el valor por defecto es false.

multi: Este parámetro es opcional, de tipo booleano. Cuando se envía true, se actualizaran todos los documentos que coincidan con el criterio de búsqueda. cuando se envía false, solo se actualizara el primer documento que coincida con el criterio de búsqueda. El valor por defecto es false.

writeConcern: Este parámetro es opcional, de tipo documento y se utiliza para especificar configuraciones de actualización. Ver write Concern.

Ejemplo:

> db.usuarios.update({"username":"brain"}, {"password":"54321"}, {upsert: false, multi : true});

4. Eliminación de Registros .remove() Sintaxis:

db.collection.remove(  
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

query: Este parámetro es requerido, de tipo documento y se utiliza para especificar el criterio de búsqueda. Para eliminar todos los documentos, pasar un documento vacío ({}).

justOne: Este parámetro es opcional, de tipo booleano y se utiliza para limitar la eliminación de documentos a solo uno cuando en envía true. El valor por defecto es false y elimina todos los documentos que coincidan con el criterio de búsqueda.

writeConcern: Este parametro es opcional, de tipo documento y se utiliza para especificar configuraciones de borrado. Ver write Concern.

Ejemplo:

> db.usuarios.remove({"username":"brain"});

Mas información ir a la página oficial de MongoDB.
https://www.mongodb.org