Je sais que c’est peut-être une question idiote, mais j’ai lu dans un e-book qu’il existe une option upsert
dans MongoDB insert. Je n'ai pas pu trouver la documentation appropriée à ce sujet. Quelqu'un peut-il m'informer à ce sujet?
Puisque upsert
est défini comme une opération qui " crée un nouveau document quand aucun document ne correspond aux critères de la requête ", il n'y a pas de place pour upserts
in insert
commande. C'est une option pour la commande update
. Si vous exécutez une commande comme ci-dessous, cela fonctionne comme un update
, s'il existe un document correspondant à query
, ou comme un insert
avec le document décrit par update
comme argument .
db.collection.update(query, update, {upsert: true})
MongoDB 3.2 ajoute replaceOne
:
db.collection.replaceOne(query, replacement, {upsert: true})
qui a un comportement similaire, mais son replacement
ne peut pas contenir d'opérateurs de mise à jour.
Comme dans les liens fournis par PKD, db.collection.insert()
ne fournit aucune possibilité d'upsert. Au lieu de cela, mongo insert insère un nouveau document dans une collection. Upsert n'est possible qu'avec db.collection.update()
et db.collection.save()
.
S'il vous arrive de passer un document à db.collection.insert()
qui est déjà dans la collection et a donc un _id
Similaire à un _id
Existant, une exception de clé dupliquée sera alors générée.