2016-12-12 1 views
1
db.so.insert({"name":"Bob", "sex": "Male", "location": "France"}) 
db.so.update({"name":"Bob"}, // search 
      {"name":"Bob", "occupation":"The Builder"}) // replace 

Je dois faire une mise à jour complète, c.-à-d. remplacez le document entier par le nouvel objet, mais dans ce cas, les champs sex et location restent car je ne fournis pas ces champs dans la requête de mise à jour.MongoDB: Mise à jour du document tout en le remplaçant

+0

Avez-vous essayé d'utiliser l'option [upsert] (https://docs.mongodb.com/v3.2/reference/method/Bulk.find.upsert/) de _update_? –

+0

J'utilise déjà upsert, je crois que c'est pour quand le document n'existe pas du tout, il va l'insérer. – 3zzy

+1

Peut être que vous pouvez essayer ce https://docs.mongodb.com/php-library/master/reference/method/MongoDBCollection-findOneAndReplace/ si votre intention était de remplacer le document. – Veeram

Répondre

2

Peut être que vous pouvez essayer findAndReplace si votre intention était de remplacer le document.

+0

'replaceOne' (depuis 3.2) est beaucoup plus rapide. – 3zzy