Manuel
PHP Manual

Mises à jour

Les mises à jour sont les opérations les plus compliquées disponibles avec MongoDB. Elles combinent une requête avec une action, modifiant les documents qui correspondent aux critères. Elles sont également extrèmement puissantes, vous permettant de changer les documents rapidement mais aussi de les remplacer tous ensemble. Elles se font sur place (quand c'est possible), entrainant une légère surcharge.

Mises à jour des objets imbriqués

Supposez que vous voulez modifier le nom de l'auteur d'un commentaire dans un document :

{ 
    "_id" : ObjectId("4b06c282edb87a281e09dad9"), 
    "content" : "ceci est un post d'un blog.",
    "comments" : 
    [
        {
            "author" : "Mike",
            "comment" : "Je pense que blah blah blah...",
        },
        {
            "author" : "John",
            "comment" : "Je ne suis pas d'accord."
        }
    ]
}
Afin de modifie un champ interne, nous utilisez $set (ainsi, les autres champs ne sont pas supprimés) avec l'index du commentaire à changer :
<?php

$blog
->update($criteria, array('$set' => array("comments.1" => array("author" => "Jim"))));

?>

L'opérateur de position

L'opérateur de position $ est utile pour la mise à jour d'objets qui se trouvent dans des tableaux. Dans l'exemple suivant, nous supposons que nous ne connaissons pas l'index du commentaire que nous souhaitons modifier, alors que vous voulons changer "John" en "Jim". Nous pouvons dans ce cas utiliser l'opérateur de position $.

<?php

$blog
->update(
    array(
"comments.author" => "John"), 
    array(
'$set' => array('comments.$.author' => "Jim")));

?>

Manuel
PHP Manual