В MongoDB, когда вы пытаетесь сохранить документ с уникальным индексом, и это приводит к ошибке, вы можете получить информацию о дубликате, включая его идентификатор (ID). Ошибки связанные с нарушением уникального индекса в MongoDB возвращают объект ошибки типа WriteError
, который содержит поле errmsg
, где можно найти информацию о дубликате.
Пример кода на Python, демонстрирующий как получить ID дубликата:
from pymongo import MongoClient, errors # Подключение к MongoDB client = MongoClient("mongodb://localhost:27017/") # Получение ссылки на коллекцию collection = client["my_database"]["my_collection"] # Создание уникального индекса на поле "name" collection.create_index("name", unique=True) # Создание дубликата с нарушением уникальности document = {"name": "John Doe"} try: # Попытка сохранения документа collection.insert_one(document) except errors.WriteError as e: # Проверка на нарушение уникального индекса if "duplicate key" in e.details["errmsg"]: # Получение информации о дубликате duplicate_id = e.details["keyValue"]["_id"] print(f"ID дубликата: {duplicate_id}") else: print("Произошла другая ошибка")
В этом примере мы создаем уникальный индекс на поле "name" и сталкиваемся с ошибкой при попытке вставить документ с уже существующим именем. В блоке except
мы проверяем, является ли ошибка ошибкой дубликата по уникальному индексу. Если да, мы можем получить ID дубликата из e.details["keyValue"]["_id"]
.
Однако, стоит отметить, что в этом примере мы предполагаем, что вы используете поле _id
в документе в качестве уникального идентификатора. Если в вашей коллекции используется другое поле для уникальности, необходимо определить его вместо _id
в коде.