Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
| info:cursos:mongodbuniversity:m001:cap2 [10/12/2018 13:11] – [Reading documents: scalar fields] mate | info: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 |
| <code bash> | <code bash> | ||
| mongo " | mongo " | ||
| 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 | ||
| * '' | * '' | ||
| + | {{ : | ||
| == 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 | ||
| + | {{ : | ||
| == Lab 2.2 | == Lab 2.2 | ||
| Línia 131: | Línia 133: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | |||
| + | == Cursors | ||
| + | * apunta al documento en curso | ||
| + | * en mongoshell, itera 20 resultados... si queremos más, podemos ejecutar '' | ||
| + | |||
| + | == Projections | ||
| + | * límita el número de campos que devuelve | ||
| + | * se usa (¿exclusivo? | ||
| + | * '' | ||
| + | * el **_id** se devuelve por defecto en todas las proyecciones, | ||
| + | * '' | ||
| + | * se pueden especificar campos (con el **0**) que no se quieren mostrar | ||
| + | |||
| + | == UpdateOne() | ||
| + | * primero se aplica un filtro al que aplicar el update | ||
| + | * el primero que cumpla el criterio, será el actualizado | ||
| + | * el segundo argumento especifica que queremos actualizar, a través de **$set** | ||
| + | <code javascript> | ||
| + | title: "The Martian" | ||
| + | }, { | ||
| + | $set: { | ||
| + | poster: " | ||
| + | } | ||
| + | })</ | ||
| + | | ||
| + | la respuesta será:'' | ||
| + | * **acknowledged** indica que se ha ejecutado correctamente | ||
| + | * **matchedCount** indica cuantos registros cumplen el criterio | ||
| + | * **modifiedCount** si se ha modificado o no (en este caso 1 o 0, no puede haber más) | ||
| + | |||
| + | <code javascript> | ||
| + | title: "The Martian" | ||
| + | }, { | ||
| + | $set: { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | })</ | ||
| + | | ||
| + | | ||
| + | == 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/ | ||
| + | * $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< | ||
| + | let review = [ | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ].join() | ||
| + | db.movieDetails.updateOne({ | ||
| + | title: "the martian" | ||
| + | },{ | ||
| + | $push: { | ||
| + | reviews: { | ||
| + | rating: 4.5, | ||
| + | reviewer: " | ||
| + | text: review | ||
| + | } | ||
| + | } | ||
| + | }) | ||
| + | </ | ||
| + | el documento ahora tendrá un campo llamado **reviews** del tipo array con un objeto que contendrá los campos indicados (rating, | ||
| + | |||
| + | <code javascript> | ||
| + | let review = [ | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ].join() | ||
| + | db.movieDetails.updateOne({ | ||
| + | title: "the martian" | ||
| + | },{ | ||
| + | $push: { | ||
| + | reviews: | ||
| + | $each: [{ | ||
| + | rating: 4.5, | ||
| + | reviewer: " | ||
| + | text: review | ||
| + | },{ | ||
| + | rating: 4.5, | ||
| + | reviewer: " | ||
| + | text: review | ||
| + | },{ | ||
| + | rating: 4.5, | ||
| + | reviewer: " | ||
| + | text: review | ||
| + | }] | ||
| + | } | ||
| + | } | ||
| + | }) | ||
| + | </ | ||
| + | |||
| + | añade tantos objetos en el array como hay | ||
| + | |||
| + | * ... otros en la página de MongoDB : [[https:// | ||
| + | |||
| + | == UpdateMany() | ||
| + | * modifica todos los documentos que cumplen el registro | ||
| + | <code javascript> | ||
| + | db.movieDetails.updateMany({ | ||
| + | rated: null | ||
| + | },{ | ||
| + | $unset: { | ||
| + | rated: "" | ||
| + | } | ||
| + | }) | ||
| + | </ | ||
| + | elimina el campo rated = null de todos los documentos | ||
| + | |||
| + | == Upserts | ||
| + | * crear nuevos documentos | ||
| + | <code javascript> | ||
| + | let detail={[...]} | ||
| + | |||
| + | db.movieDetails.updateOne({ | ||
| + | " | ||
| + | },{ | ||
| + | $set: detail | ||
| + | },{ | ||
| + | upsert: true | ||
| + | }) | ||
| + | </ | ||
| + | * **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 | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * con todos estos cambios sobre el documento, hacemos un replaceOne() para actualizarlo todo | ||
| + | <code javascript> | ||
| + | db.movieDetails.replaceOne({" | ||
| + | </ | ||
| + | |||
| + | == Delete | ||
| + | * deleteOne() | ||
| + | * deleteMany() | ||
| + | |||
| + | {{ : | ||
| + | {{ : | ||