Ne pas utiliser d'insert.
Utiliser la mise à jour avec upsert=true
. Update cherchera le document qui correspond à votre requête, puis il modifiera les champs que vous voulez et ensuite, vous pouvez lui dire upsert:True si vous voulez insérer si aucun document ne correspond à votre requête.
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
Donc, pour votre exemple, vous pourriez utiliser quelque chose comme ceci :
db.collection.update(doc, doc, {upsert:true})