MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

mongodb :insérer s'il n'existe pas

On dirait que vous voulez faire un "upsert". MongoDB a un support intégré pour cela. Passez un paramètre supplémentaire à votre appel update() :{upsert:true}. Par exemple :

key = {'key':'value'}
data = {'key2':'value2', 'key3':'value3'};
coll.update(key, data, upsert=True); #In python upsert must be passed as a keyword argument

Cela remplace entièrement votre bloc if-find-else-update. Il sera inséré si la clé n'existe pas et sera mis à jour si c'est le cas.

Avant :

{"key":"value", "key2":"Ohai."}

Après :

{"key":"value", "key2":"value2", "key3":"value3"}

Vous pouvez également spécifier les données que vous souhaitez écrire :

data = {"$set":{"key2":"value2"}}

Maintenant, votre document sélectionné mettra à jour la valeur de "key2" uniquement et laissera tout le reste intact.