[英]Python - Pymongo Insert and Update Documents
Using PyMongo, I have a set of dict's in a list that I'd like to submit to my MongoDB.使用 PyMongo,我在一个列表中有一组 dict,我想提交给我的 MongoDB。 Some of the items in the list are new entries, and some are to update.列表中的一些项目是新条目,一些是要更新的。
Example:例子:
On Server Database:在服务器数据库上:
[{"_id" : 1, "foo" : "bar}]
To send to database:发送到数据库:
[{"_id" : 1, "foo" : "HELLO"}, {"_id" : 2, "Blah" : "Bloh"}]
I'm currently using the following to insert documents, but how would I do something like stated above?我目前正在使用以下内容插入文档,但我将如何执行上述操作? Any help is appreciated!任何帮助表示赞赏!
collection.insert(myDict)
You have to use the upsert
to update (or insert) your data您必须使用upsert
来更新(或插入)您的数据
from pymongo import MongoClient
client = MongoClient()
collection = client.my_database.my_collection
objects = [{"_id" : 1, "foo" : "HELLO"}, {"_id" : 2, "Blah" : "Bloh"}]
for obj in objects:
collection.replace_one({"_id": obj["_id"]}, obj, upsert=True)
Use replace_one
as the update
method is deprecated :使用replace_one
作为update
方法已弃用:
https://api.mongodb.com/python/current/api/pymongo/collection.html#pymongo.collection.Collection.replace_one https://api.mongodb.com/python/current/api/pymongo/collection.html#pymongo.collection.Collection.replace_one
If you want to use bulk update:如果要使用批量更新:
from pymongo import ReplaceOne
update_objects = list()
for obj in objects:
update_objects.append(ReplaceOne( {'_id': obj['_id']}, obj, upsert=True))
collection.bulk_write(update_objects)
For pymongo 3.0 and later:对于 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参考: http : //api.mongodb.org/python/current/api/pymongo/collection.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.