Python-Pymongo вставка и обновление документов

используя PyMongo, у меня есть набор dict в списке, который я хотел бы представить моему MongoDB. Некоторые из элементов в списке являются новыми записями, а некоторые должны обновляться.

пример:

На Базе Данных Сервера:

[{"_id" : 1, "foo" : "bar}]

отправить в базу данных:

[{"_id" : 1, "foo" : "HELLO"}, {"_id" : 2, "Blah" : "Bloh"}]

В настоящее время я использую следующее для вставки документов, но как бы я сделал что-то подобное выше? Любая помощь приветствуется!

collection.insert(myDict)

3 ответов


использовать :

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)

вы также можете использовать сохранить

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)

для pymongo 3.0 и более поздних версий:

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)

Ref:http://api.mongodb.org/python/current/api/pymongo/collection.html