Rechercher une fonction PHP

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.

Modification et remplacement de documents

Il existe 2 types de mises à jour: modification ou remplacement. Les modifications contiennent des opérateurs $ et changent des champs d'un document: elles peuvent incrémenter des compteurs, ajouter des éléments dans des tableaux ou encore changer le type d'un champ.

Par exemple, une mise à jour en modification ajoute un nouveau champ au document.

<?php
/** imaginons un document de cette structure :
 * {"username" : "...", "password" : "...", "email" : "..."}
 */
$coll->update(array("username" => "joe"), array('$set' => array("twitter" => "@joe4153")));

/** maintenant, le document ressemblera à :
 * {"username" : "joe", "password" : "...", "email" : "...", "twitter" : "@joe4153"}
 */
?>

Les mises à jour de remplacement remplacent le document entier par un autre. Elles ne sont pas aussi efficaces que les modifications, mais elles peuvent avoir un intérêt dans le cas où les opérateurs à $ ne peuvent être utilisés.

Par exemple, une mise à jour de remplacement peut complètement changer la structure d'un document.

<?php
/** imaginons un document de cette structure:
 * {"username" : "...", "password" : "...", "email" : "..."}
 */
$coll->update(array("username" => "joe"), array("userId" => 12345"info" => array(
    
"name" => "joe""twitter" => "@joe4153""email" => "..."), "likes" => array()));

/** maintenant, le document ressemblera à :
 * {
 *     "userId" : 12345,
 *     "info" : {
 *         "name" : "joe",
 *         "twitter" : "@joe4153",
 *         "email" : "..."
 *     },
 *     "likes" : []
 * }
 */
?>

Retour à la première page de Manuel PHP  Table des matières Haut

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 modifier un champ interne, nous utilisons $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"))));

?>

Retour à la première page de Manuel PHP  Table des matières Haut

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")));

?>
Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-mongo.updates.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut