2017-08-07 2 views
0

y at-il un moyen avec mongodb à upsert en vrac, mais choisissez ce qu'il faut faire lors de l'insertion et lors de la mise à jour. par exemple:mongodb upsert avec condition

J'ai ce document dans le MongoDB:

  1. {name:"david", last_name:"family_name", published:true}

arrive maintenant un nouveau document qui ressemble à ceci:

  1. {name:"david", last_name:"family_name_changed", published:false}

maintenant je veux remplacer le document qui est dans le DB (document 1) qui ne mettra à jour le champ last_name (ou tout autre champ) mais je ne veux pas qu'il met à jour le champ publié. (jamais)

Quelle est la façon de faire cela?

merci

Répondre

0

Vous pouvez utiliser $set mettre à jour un champ spécifique, par exemple:

db.<name of your collection>.update(<query>, 
{ 
    $set: 
    { 
     last_name: <value to set> 
    } 
}, { multi: true }); 
+0

Hey, merci pour l'aide. mais le problème est que je ne veux pas savoir quels champs spécifiques doivent être mis à jour ... la seule chose que je veux faire est de pouvoir mettre à jour un document entier mais de laisser quelques champs ouverts, même s'ils apparaissent dans le nouveau document que je veux mettre à jour ... –