MongoDB为重复文档生成相同的ObjectID
我是MongoDB的新手,在Jupyter笔记本中使用Pymongo。第一次插入文档时,它工作正常。插入同一文档(重新运行同一jupyter单元格)时,我会得到一个“DuplicateKeyError:E11000 duplicate key error index” 当我再次实例化同一个用户对象时,它可以很好地插入。我也是新手。我试图理解为什么会发生这种错误 我的理解是Mongo基于时间和随机性创建了OjbectID。这就好像ObjectID是基于我的对象被实例化的时间MongoDB为重复文档生成相同的ObjectID,mongodb,jupyter-notebook,pymongo,Mongodb,Jupyter Notebook,Pymongo,我是MongoDB的新手,在Jupyter笔记本中使用Pymongo。第一次插入文档时,它工作正常。插入同一文档(重新运行同一jupyter单元格)时,我会得到一个“DuplicateKeyError:E11000 duplicate key error index” 当我再次实例化同一个用户对象时,它可以很好地插入。我也是新手。我试图理解为什么会发生这种错误 我的理解是Mongo基于时间和随机性创建了OjbectID。这就好像ObjectID是基于我的对象被实例化的时间 class User:
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
实际行为:第一次运行单元格时起作用。第二次运行时出错。如果再次调用用户类(使用相同的信息),它将工作 出现此错误的原因是,您试图插入一个新文档,该文档的索引键(其中索引键标记为唯一)的值已存在于MongoDB中的一个文档中 如果未明确索引任何键,则插入时必须在文档中包含“\u id”字段,并且“\u id”字段的值必须与先前插入的文档的值相同 请浏览以下连结:
能否粘贴获得重复密钥错误所依据的代码?此外,集合是否在某些字段上建立索引?