3.3.3.2 - $unset
El modificador $unset servirà per a eliminar elements (camps) d'un o uns documents. Si el camp existia, l'eliminarà, i si no existia, no donarà error (avisarà que s'han modificat 0 documents).
La sintaxi és:
{ $unset : {camp : 1 } }
Haurem de posar un valor al camp que anem a esborrar per a mantenir la sintaxi correcta, i posem 1 que equival a true. També podríem posar -1, que equival a false, però aleshores no l'esborraria, i per tant no faríem res. Sempre posarem 1.
Mirem el següent exemple. Afegim un camp, que serà el número d'ordre, i després el llevarem.
> db.alumnes.update( {nom:"Abel"} , { $set: {num_ordre:10} } )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.alumnes.findOne()
{
"_id" : ObjectId("56debe3017bf4ed437dc77c8"),
"nom" : "Abel",
"cognoms" : "Bernat Carrera",
"edat" : 22,
"nota" : [
8.5,
7.5,
9
],
"adreça" : {
"carrer" : "Major",
"numero" : 7,
"cp" : "12502"
},
"num_ordre" : 10
}
> db.alumnes.update( {nom:"Abel"} , { $unset: {num_ordre:1} } )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.alumnes.update( {nom:"Abel"} , { $unset: {puntuacio:1} } )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
Hem afegit primer el camp num_ordre, i hem mostrat el document per comprovar que existeix. Després esborrem el camp num_ordre (i ens confirma que ha modificat un document). Després intentem esborrar un camp que no existeix, puntuacio. No dóna error, però ens avisa que ha modificat 0 documents. Podem comprovar al final com el document ha quedat com esperàvem.
> db.alumnes.findOne()
{
"_id" : ObjectId("56debe3017bf4ed437dc77c8"),
"nom" : "Abel",
"cognoms" : "Bernat Carrera",
"edat" : 22,
"nota" : [
8.5,
7.5,
9
],
"adreça" : {
"carrer" : "Major",
"numero" : 7,
"cp" : "12502"
}
}
Llicenciat sota la Llicència Creative Commons Reconeixement SenseObraDerivada 4.0