假设我有以下 MongoDB 集合(mongomock
用于此示例,因此很容易重现):
import mongomock
collection = mongomock.MongoClient().db.collection
objects = [{'name': 'Alice', 'age': 21}, {'name': 'Bob', 'age': 20}]
collection.insert_many(objects)
然后我想用一些新对象的字段更新我现有的对象:
new_objects = [{'name': 'Alice', 'height': 170}, {'name': 'Caroline', 'height': 160}]
我能想到的唯一方法是:
for record in new_objects:
if collection.find_one({'name': record['name']}) is not None:
collection.update_one({'name': record['name']}, {'$set': {'height': record['height']}})
else:
collection.insert_one(record)
但是,如果new_objects
非常大,那么这种方法会变慢 - 有没有办法使用update_many
它?