En utilisant PyMongo, j'ai un ensemble de dict dans une liste que j'aimerais soumettre à ma MongoDB. Certains éléments de la liste sont de nouvelles entrées et d'autres doivent être mis à jour.
Exemple:
Sur la base de données du serveur:
[{"_id" : 1, "foo" : "bar}]
Pour envoyer à la base de données:
[{"_id" : 1, "foo" : "HELLO"}, {"_id" : 2, "Blah" : "Bloh"}]
J'utilise actuellement les éléments suivants pour insérer des documents, mais comment puis-je faire quelque chose comme indiqué ci-dessus? Toute aide est appréciée!
collection.insert(myDict)
Utilisez l'option upsert
:
from pymongo import MongoClient
cl = MongoClient()
coll = cl["local"]["test2"]
data = [{"_id" : 1, "foo" : "HELLO"}, {"_id" : 2, "Blah" : "Bloh"}]
for d in data:
coll.update({'_id':d['_id']}, d, True)
Vous pouvez également utiliser save
import pymongo
con = pymongo.MongoClient()
coll = con.db_name.collection_name
docs = [{"_id" : 1, "foo" : "HELLO"}, {"_id" : 2, "Blah" : "Bloh"}]
for doc in docs:
coll.save(doc)
Pour pymongo 3.0 et versions ultérieures:
import pymongo
con = pymongo.MongoClient()
collection = con.db_name.collection_name
docs = [{"_id" : 1, "foo" : "HELLO"}, {"_id" : 2, "Blah" : "Bloh"}]
for d in docs:
collection.update_many({'_id':d['_id']}, d,True)
Réf: http://api.mongodb.org/python/current/api/pymongo/collection.html