Mongo desde cero

Caracteristicas mas imporantes: Mongo es una bd nosql, opensource escrito en C++. Trabajamos con documentos y colecciones. Escalabilidad de manera horizontal Nos permite utilizar Js por el lado del servidor

¿Quienes utilizan? The New York Time, Cisco

Instalacion Vamos al sitio web docs.mongodb.org/manual/installation y seguimos los pasos del sitio oficial, dependiendo del sistema operativo en mi caso OX.

brew update

brew install mongodb

create db

mkdir -p /data/db

ver database

show database

cambiar bd

use name_database

saber en que base de datos estoy

db

Crear documento:

usuario = { name: "", lastname: "" }

podemos declarar variables

var usuario = { name: "", lastname: "" }

Insertar

db.usuarios.insert(usuario)

mongo db creara automaticamente la coleccion usuarios en nuestra base de datos, para grabar en disco.

para ver coleccion

show collections;

para obtener los datos

db.usuarios.find()
db.usuarios.findOne()

where not ($ne)

db.usuarios.find( { age: { $ne: 22 } })

guardar db.usuarios.save(v)

actualizar Primero parametro es la condicional segundo es $set o $unset el ptercer parametro es multi para ver si hay mas de algun documento con esa condicion.

db.usuarios.update( { name: "text"}, { $set: { name: "New test" } }, {multi: true } )

delete campo example cuando el nombre sea test elimina el campo

db.usuarios.update( { name: "text"}, { $unset: { example: 1 } }, {multi: true } )

Elimina todos los documentos donde el nombre sea felipe

db.usuarios.remove({ name: "Felipe"})
db.usuarios.remove({})

Vaciar toda la coleccion

db.usuarios.drop()

Eliminar db

db.dropDatabase()

Consulas mas especificas: ejemplo muestrame los nombres de usuario oculta los ids.

db.usuarios.find( {}, { name: 1 }, { id: 0 })

Operadores

$gt 			>
%gte 		>=
$lt 			<
$lte 		<=

Ejemplo traeme los usuarios con edad mayor a 10 y oculta el id

db.usuarios.find( {}, { age:  { $gt: 10 } }, { id: 0 })

Entre 10 y 20

db.usuarios.find( {}, { age:  { $gt: 10 , $lt: 20 } }, { id: 0 })

Cursores

Ejemplo

var cursor = db.usuarios.find()
cursor.forEach( function(d){ d.valor = 100; db.test.save(d); } )
var cursor = db.test.find()
cursor.forEach( function(d){ pint(d.valor)})

Metodos de cursores

db.usuarios.find().count

Asendente

db.usuarios.find().sort({ valor: 1 })

Desendente

db.usuarios.find().sort({ valor: -1 })

Limite

db.usuarios.find().sort({ valor: -1 }).limit(10)

Skip saltate el primero

db.usuarios.find().sort({ valor: -1 }).skip(1).limit(10)

Tamaño sobre el skip

db.usuarios.find().sort({ valor: -1 }).skip(1).size()

Arreglos

var array = [1, 2, 3]
var user = { name: "test", value: array }
db.usuarios.insert(user)
db.user.find()

Ejemplo crear array

db.usuarios.update({}, { $set: { new_array: [ ] } } )

Agregar nuevos elementos a nuestro arreglo, siempre ocupamos la palabra $set, pero para trabajar con arreglos ocupamos $addToSet, addToSet busca el elemento, si lo encuentra no hace nada, en caso contrario lo crea.

Ejemplo agregamos un 4 valor al array

db.user.update( {}, { $addToSet: { value: 4 } } )

Otro ejemplo para insertar elementos a nuestro arreglo que se encuentra dentro de nuestro documento.

db.user.update( {}, { $push: { value: 4 } } )

Para insertar varios elementos en nuestro arreglo.

# Método push
db.user.update( {}, { $push: { value: { $each: [ 5, 6]} } } )

# Método addToSet
db.user.update( {}, { $push: { value: { $each: [ 5, 6]} } } )

$push y $addToSet siempre agregan los nuevos elementos al final. Si nosotros queremos indicar la posición en nuestro arreglo.

db.user.update( {}, { $push: { value: { $each: [ 5, 6], $position: 4 } } } )

Agrega dos elementos 5 y 6 y al momento de insertar lo ordena.

db.user.update( {}, { $push: { value: { $each: [ 5, 6], $sort: 1 } } } )

# Para ordenar
db.user.update( {}, { $push: { value: { $each: [], $sort: 1 } } } )

Eliminar elementos de mi arreglo

db.user.update( {}, { $pull: { value: 40 } } )

Elimina todos los valores mayores o igual a 50

db.user.update( {}, { $pull: { value: { $gte: 50 }}})

db.user.update( {}, { $pullAll: { value: [4, 5] }})

Arreglos:

value [1,2,3,4,5] $slice: recorrera el arreglo hasta la posición 2

db.user.find( {}, value: { $slice: 2 } )

Traeme todos los documentos donde se encuentre:

db.user.find( { name: {$in: "Felipe" }}, value: { $slice: 2 } )
# Negación
db.user.find( { name: {n$in: "Felipe" }}, value: { $slice: 2 } )

Documentos agrupados