MongoDB - 是否可以只在记录不存在的时候插入一条记录?

问题描述 投票:0回答:1

我有一个带有自定义id的数据库,我只想在id与其他id不同的情况下插入一条新记录。如果id存在,我不想更新值(所以我认为upsert不是我的解决方案)。我使用的是pymongo连接器。

示例数据库。

[
  {"_id": 1, "name": "john"},
  {"_id": 2, "name": "paul"}
]
mongodb pymongo
1个回答
1
投票

陷阱和忽略 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'}
© www.soinside.com 2019 - 2024. All rights reserved.