Python 如何使用一个字段作为主键在mongodb中保存数据

Python 如何使用一个字段作为主键在mongodb中保存数据,python,mongodb,flask,Python,Mongodb,Flask,我有一个flask服务正在运行,它连接到mongodb以保存用户信息。当我想保存一个用户信息时,我首先检查是否存在具有该用户名的用户,然后将向mongodb中添加条目。现在我的问题是,在我检查I db之后,是否有可能在添加相应条目之前创建另一个条目。我认为可能性很小,无论如何,您是否使用unique index(用户名)在mongodb级别强制执行唯一性 这样的事情会让你感觉更安全: db.users.ensureIndex( { "username": 1 }, { unique: true

我有一个flask服务正在运行,它连接到mongodb以保存用户信息。当我想保存一个用户信息时,我首先检查是否存在具有该用户名的用户,然后将向mongodb中添加条目。现在我的问题是,在我检查I db之后,是否有可能在添加相应条目之前创建另一个条目。

我认为可能性很小,无论如何,您是否使用unique index(用户名)在mongodb级别强制执行唯一性

这样的事情会让你感觉更安全:

db.users.ensureIndex( { "username": 1 }, { unique: true } )

如果数据存在于单个monogo Instance中,则此方法有效,但如果我使用Sharding,则会发生什么?我知道有两种方法可以在分片集合之间强制执行唯一性,它们是我知道的两个选项,如下所述:,基本上可以使用唯一约束对集合进行分片:
db.runCommand({shardCollection:“users”,key:{username:1},唯一:true})