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 })
$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