MongoDB
Mettre à jour les opérateurs
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):
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
);
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:
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
);