Omet navegació

3.3.3.3 - $rename

El modificador $rename canviarà el nom d'un camp. Si no existia, no donarà error i senzillament no el modificarà. Hem de cuidar de posar el nou nom del camp entre cometes, per a que no done error.

La sintaxi és:

{ $rename : { camp1 : "nou_nom1" , camp2 : "nou_nom2" , ... } }

Per exemple, canviem el nom del camp nota a notes:

> db.alumnes.update( {nom:"Abel"} , { $rename: {nota:"notes"} } )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.alumnes.findOne()
{
    "_id" : ObjectId("56debe3017bf4ed437dc77c8"),
    "nom" : "Abel",
    "cognoms" : "Bernat Carrera",
    "edat" : 22,
    "adreça" : {
        "carrer" : "Major",
        "numero" : 7,
        "cp" : "12502"
    },
    "notes" : [
        8.5,
        7.5,
        9
    ]
}

Observeu que l'ha canviat de lloc, cosa que ens fa pensar que en canviar de nom un camp, el que fa és tornar a crear-lo amb el nou nom, i esborrar el camp antic.

En aquest exemple tornem a canviar el nom a nota, i intentem canviar el nom a un camp inexistent, camp1. No donarà error.

> db.alumnes.update( {nom:"Abel"} , { $rename: {camp1: "camp2" , notes:"nota"} } )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.alumnes.findOne()
{
    "_id" : ObjectId("56debe3017bf4ed437dc77c8"),
    "nom" : "Abel",
    "cognoms" : "Bernat Carrera",
    "edat" : 22,
    "adreça" : {
        "carrer" : "Major",
        "numero" : 7,
        "cp" : "12502"
    },
    "nota" : [
        8.5,
        7.5,
        9
    ]
}