Я новичок в MongoDB и использую Pymongo в ноутбуке Jupyter. При вставке документа в первый раз все работает нормально. При вставке того же документа (повторного запуска той же ячейки jupyter) я получаю «DuplicateKeyError: E11000 дубликат индекса ошибки ключа».
Когда я снова создаю тот же объект User, он вставляется просто отлично. Я также новичок в классах. Я пытаюсь понять, почему эта ошибка происходит.
Насколько я понимаю, Монго создает OjbectID на основе времени и случайности. Это действует так, как будто ObjectID основан на том, когда был создан мой объект.
class User:
def __init__(self, email, password, username=None, image_file=None):
self.email = email
self.password = password
self.username = username
self.image_file = image_file
self.newUser= f"""{{"email":"{self.email}",
"password":"{self.password}",
"username": "{self.username}",
"image_file": "{self.image_file}"}}"""
self.jsonDoc = json.loads(self.newUser)
def __repr__(self):
return f"User('{self.username}', '{self.email}',
'{self.image_file}')"
jim = User("xx2", "password")
mongo.db.users.insert_one(jim.jsonDoc)
Ожидаемое поведение: Создавать новый документ и уникальный ObjectID каждый раз, когда ячейка перезапускается.
Фактическое поведение: работает при первом запуске ячейки. Ошибки при втором запуске. Если класс пользователя вызывается снова (с той же информацией), он работает.