Recherche…


Syntaxe

  • {$ set: {<field1>: <valeur1>, <champ2>: <valeur2>, ...}}

Paramètres

paramètres Sens
nom de domaine Le champ sera mis à jour: { name : 'Tom'}
targetvaule La valeur sera attribuée au champ: {name: 'Tom' }

Remarques

Référence pour l'opérateur $ set: $ défini sur le site officiel

Opérateur $ set pour mettre à jour les champs spécifiés dans les documents

I. Aperçu

Une différence significative entre MongoDB et SGBDR est que MongoDB a plusieurs types d'opérateurs. L'un d'eux est l'opérateur de mise à jour, utilisé dans les instructions de mise à jour.

II. Que se passe-t-il si nous n'utilisons pas les opérateurs de mise à jour?

Supposons que nous ayons une collection d' étudiants pour stocker les informations sur les étudiants (vue Table): entrer la description de l'image ici

Un jour, vous obtenez un travail qui doit changer le sexe de Tom de "M" à "F". C'est facile, non? Donc, vous écrivez ci-dessous la déclaration très rapidement en fonction de votre expérience de SGBDR:

db.student.update(
    {name: 'Tom'}, // query criteria
    {sex: 'F'} // update action
);

Voyons quel est le résultat: entrer la description de l'image ici

Nous avons perdu l'âge et le nom de Tom! À partir de cet exemple, nous pouvons savoir que l’ensemble du document sera surchargé sans opérateur de mise à jour dans la déclaration de mise à jour. C'est le comportement par défaut de MongoDB.

III. Opérateur set $

Si nous voulons changer uniquement le champ "sexe" dans le document de Tom, nous pouvons utiliser $set pour spécifier le ou les champs que nous voulons mettre à jour:

db.student.update(
    {name: 'Tom'}, // query criteria
    {$set: {sex: 'F'}} // update action
);

La valeur de $set est un objet, ses champs correspondent aux champs que vous souhaitez mettre à jour dans les documents et les valeurs de ces champs sont les valeurs cibles.

Donc, le résultat est correct maintenant: entrer la description de l'image ici

De même, si vous souhaitez modifier à la fois le sexe et l’âge, vous pouvez les ajouter à $set :

db.student.update(
    {name: 'Tom'}, // query criteria
    {$set: {sex: 'F', age: 40}} // update action
);


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow