MongoDB - можно ли вставить запись только тогда, когда запись не существует - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть база данных с пользовательскими идентификаторами, и я хочу вставить новую запись, только если идентификатор отличается от других идентификаторов. Если идентификатор существует, я не хочу обновлять значение (поэтому я думаю, что upsert не является для меня решением).
Я использую разъем pymon go.

Пример базы данных:

[
  {"_id": 1, "name": "john"},
  {"_id": 2, "name": "paul"}
]

1 Ответ

1 голос
/ 21 апреля 2020

Ловите и игнорируйте 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'}
...