我有一个带有自定义id的数据库,我只想在id与其他id不同的情况下插入一条新记录。如果id存在,我不想更新值(所以我认为upsert不是我的解决方案)。我使用的是pymongo连接器。
示例数据库。
[
{"_id": 1, "name": "john"},
{"_id": 2, "name": "paul"}
]
陷阱和忽略 DuplicateKeyError
,例如:
pymongo import MongoClient
from pymongo.errors import DuplicateKeyError
db = MongoClient()['mydatabase']
records = [
{"_id": 1, "name": "john"},
{"_id": 2, "name": "paul"},
{"_id": 3, "name": "ringo"}
]
for record in records:
try:
db.mycollection.insert_one(record)
print (f'Inserted {record}')
except DuplicateKeyError:
print (f'Skipped duplicate {record}')
pass
结果(类似):
Skipped duplicate {'_id': 1, 'name': 'john'}
Skipped duplicate {'_id': 2, 'name': 'paul'}
Inserted {'_id': 3, 'name': 'ringo'}