Aquesta és una revisió antiga del document
Chapter 2 : The MongoDB Query Language + Atlas
CRUD
- Create
- Read
- Update
- Delete
Installing the mongo Shell
Compass no cobre toda las opciones que da MongoDB
windows
- download center
- instalar MongoDB Server versión enterprise (soporte SSL?) para acceder a Atlas Cluster
c:\Program Files\MongoDB\Server\3.4mongo –nodb→quit()
osx/linux
- descargar
- modificar path
conexión
mongo "mongodb://cluster0-shard-00-00-jxeqq.mongodb.net:27017,cluster0-shard-00-01-jxeqq.mongodb.net:27017,cluster0-shard-00-02-jxeqq.mongodb.net:27017/test?replicaSet=Cluster0-shard-0" --authenticationDatabase admin --ssl --username m001-student --password m001-mongodb-basics
- cluster, le indicamos todos los servers
- test es la DB a la que le indicamos que queremos conectar, la iremos cambiando, por ejemplo: 100YWeatherSmall
use videoshow collectionsdb.movies.find().pretty()
Lab2
- crear cuenta en Atlas
- creación cluster en AWS (free tier)
- settings
- project name: *M001*
- Security
- IP Whitelist → Allow access from anywhere
- MongoDB Users → new user
- user: m001-student
- pass: m001-mongodb-basics
Connecting to your sandbox cluster from mongo shell
- desde Atlas GUI, Overview → Connect
- usar mongodb-shell connection
- v3.4+
mongo "mongodb://sandbox-shard-00-00-cab0l.mongodb.net:27017,sandbox-shard-00-01-cab0l.mongodb.net:27017,sandbox-shard-00-02-cab0l.mongodb.net:27017/test?replicaSet=Sandbox-shard-0" --ssl --authenticationDatabase admin --username m001-student --password m001-mongodb-basics
Loading data into your sandbox cluster
show dbs- descargar datos de ejemplo y cargar en mi cluster
load(«loadMovieDetailsDataset.js»)
Connecting to your sandbox cluster from Compass
- Desde Atlas, y en modo simplificado, identificar al servidor primario de nuestro cluster
- crear una nueva conexión, guardar como favorito
Creating Documents
- create documents = inserts
insertOne()
desde Compass:
- crear nueva colección
- insertar nuevo documento
desde mongodb-shell:
db→ database en usodb.moviesScratch.insertOne({title:"Star Trek II: Thw Wrath of man", year: 1982, imdb: "TT0084726"})
- creará la colección si esta no existiese
- todo documento de una colección ha de tener un identificador único: _id
- si nosotros no se lo creamos, se creará por nosotros
db.moviesScratch.insertOne({_id: "tt0084726", title:"Star Trek II: Thw Wrath of man", year: 1982, imdb: "TT0084726"})
- no conviene mezclar en una colección diferentes tipos de _id:
insertMany()
- en lugar de pasar un objeto {…} le pasaremos un array [ {…},{…},…,{…}]
db.moviesScratch.insertMany( [ { "_id" : "tt0084726", "title" : "Star Trek II: The Wrath of Khan", "year" : 1982, "type" : "movie" }, { "_id" : "tt0796366", "title" : "Star Trek", "year" : 2009, "type" : "movie" }, { "_id" : "tt0084726", "title" : "Star Trek II: The Wrath of Khan", "year" : 1982, "type" : "movie" }, { "_id" : "tt1408101", "title" : "Star Trek Into Darkness", "year" : 2013, "type" : "movie" }, { "_id" : "tt0117731", "title" : "Star Trek: First Contact", "year" : 1996, "type" : "movie" } ] );
- por defecto, insertMany() trabaja de manera «ordenada», podemos especificarle que no es así añadiendo un segundo parámetro al comando: {[…],{«ordered»: false}}
- si intentamos introducir 2 documentos con el mismo _id dará un error y dejará de insertar documentos.
- si le hemos indicado el ordered: false, no insertará aquellos que den errores, pero continuará insertando el resto
Lab 2.2
Reading documents: scalar fields
- AND:
{«campo1»: restricción1, «campo2»: restricción2} - OBJECTS:
{«objeto.campo»: valor1, «objeto.subobjeto.campo»: valor2}
ejemplo/quiz
buscar en movieDetails cuantas películas han ganado 2 galardones y han tenido 2 nominaciones:
- mongodb shell:
db.movieDetails.find({«awards.wins»: 2, «awards.nominations»: 2}).count() - compass:
{awards.wins: 2, awards.nominations: 2}
2.7 Array Fields
db.movies.find({cast: [«Jeff Bridges», «Tim Robbins»]}).pretty(): muestra solo los documentos que cumplen exactamente el critero de tener 2 elementos en el array *cast* con esos actoresdb.movies.find({cast: «Jeff Bridges»}).pretty(): muestra los documentos donde aparece ese actor, aunque no exclusimante y sin tener importancia el ordendb.movies.find({«cast.0»: «Jeff Bridges»}).pretty(): busca el actor en la primera posición del array *cast*


