Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
info:cursos:mongodbuniversity:m001:cap2 [10/12/2018 13:45] – [2.7 Array Fields] mateinfo:cursos:mongodbuniversity:m001:cap2 [14/12/2018 10:21] (actual) – [conexión] mate
Línia 18: Línia 18:
   * modificar path   * modificar path
  
-=== conexión+=== conexión RS curso
 <code bash> <code bash>
 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 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
Línia 32: Línia 32:
   * creación cluster en AWS (free tier)   * creación cluster en AWS (free tier)
   * settings   * settings
-    * project name: *M001*+    * project name: **M001**
   * Security   * Security
     * IP Whitelist -> Allow access from anywhere     * IP Whitelist -> Allow access from anywhere
Línia 47: Línia 47:
   * descargar datos de ejemplo y cargar en mi cluster   * descargar datos de ejemplo y cargar en mi cluster
   * ''load("loadMovieDetailsDataset.js")''   * ''load("loadMovieDetailsDataset.js")''
 +{{ :info:cursos:mongodbuniversity:m001:loadmoviedetailsdataset.zip |}}
  
 == Connecting to your sandbox cluster from Compass == Connecting to your sandbox cluster from Compass
Línia 114: Línia 115:
   * si intentamos introducir 2 documentos con el mismo **_id** dará un error y dejará de insertar documentos.    * 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   * si le hemos indicado el **ordered: false**, no insertará aquellos que den errores, pero continuará insertando el resto
 +{{ :info:cursos:mongodbuniversity:m001:insertmany.zip |}}
  
 == Lab 2.2 == Lab 2.2
Línia 174: Línia 176:
      
 == Update Operators == Update Operators
 +For update operations, update operators specify how to modify specific fields in documents matching a filter. Fields may be added, deleted, or have their value changed in some way. Update operators define what modifications to make with respect to one or more fields in matching documents.
  
 +  * $set : añade campos
 +  * $unset : elimina campos
 +  * $min
 +  * $max
 +  * $inc : incrementa el valor del campo/campos en el valor indicado
 +  * $addToSet : añade elementos a un array (si no existen previamente)
 +  * $pop : elimina el primer / último elemento de un array
 +  * $pullAll : elimina los valores que coíncidan
 +  * $pull : elimina el campo que coincida
 +  * $push: añade un array de elementos<code javascript>
 +let review = [
 +  "aadasdsada",
 +  "dsdadasdsadasdsa",
 +  "asdasfeadfsdafasfdsfasdfsda"
 +].join()
 +db.movieDetails.updateOne({
 +  title: "the martian"
 +},{
 +  $push: {
 +    reviews: {
 +      rating: 4.5,
 +      reviewer: "Spencer H.",
 +      text: review
 +    }
 +  }
 +})
 +</code>
 +el documento ahora tendrá un campo llamado **reviews** del tipo array con un objeto que contendrá los campos indicados (rating,reviewer, text)
 +
 +<code javascript>
 +let review = [
 +  "aadasdsada",
 +  "dsdadasdsadasdsa",
 +  "asdasfeadfsdafasfdsfasdfsda"
 +].join()
 +db.movieDetails.updateOne({
 +  title: "the martian"
 +},{
 +  $push: {
 +    reviews:{  
 +      $each: [{
 +        rating: 4.5,
 +        reviewer: "Spencer H.",
 +        text: review
 +      },{
 +        rating: 4.5,
 +        reviewer: "Spencer H.",
 +        text: review
 +      },{
 +        rating: 4.5,
 +        reviewer: "Spencer H.",
 +        text: review
 +      }]
 +    }
 +  }
 +})
 +</code>
 +
 +añade tantos objetos en el array como hay
 +
 +  * ... otros en la página de MongoDB : [[https://docs.mongodb.com/manual/reference/operator/update/]]
 +
 +== UpdateMany()
 +  * modifica todos los documentos que cumplen el registro
 +<code javascript>
 +db.movieDetails.updateMany({
 +  rated: null
 +},{
 +  $unset: {
 +    rated: ""
 +  }
 +})
 +</code>
 +elimina el campo rated = null de todos los documentos
 +
 +== Upserts
 +  * crear nuevos documentos
 +<code javascript>
 +let detail={[...]}
 +
 +db.movieDetails.updateOne({
 +  "imdb.id": detail.imdb.id
 +},{
 +  $set: detail
 +},{
 +  upsert: true
 +})
 +</code>
 +  * **detail** contiene todos los campos del documento
 +  * **$set** intenta actualizar el documento
 +  * **upsert=true** inserta si no existe el documento previamente (que cumpla el criterio del primer parámetro)
 +
 +== 2.14 replaceOne()
 +  * para aplicaciones en las que es más fácil reemplazar todo el documento
 +  * ''detailDoc = db.movieDetails.findOne({"imdb.id": "tt...."});''
 +  * ''detailDoc.poster;'' : printea null, no está definido
 +  * ''detailDoc.poster = "http://....";'' ; añade el campo
 +  * ''detailDoc.genres.push("Documentary");'' este **push** es un método javascript, no el operador visto anteriormente, y añade el valor al array de **genres**
 +  * con todos estos cambios sobre el documento, hacemos un replaceOne() para actualizarlo todo
 +<code javascript>
 +db.movieDetails.replaceOne({"imdb.id": detailDoc.imdb.id}, detailDoc);
 +</code>
 +
 +== Delete
 +  * deleteOne()
 +  * deleteMany()
 +
 +{{ :info:cursos:mongodbuniversity:m001:pasted:20181210-142929.png }}
 +{{ :info:cursos:mongodbuniversity:m001:loadreviewsdataset.zip |}}
  • info/cursos/mongodbuniversity/m001/cap2.1544478345.txt.gz
  • Darrera modificació: 10/12/2018 13:45
  • per mate