我有一个用 Flask+MongoEngine 创建的应用程序,我有一个像这样的“用户文档”:
class User(db.Document):
username = db.StringField(max_length=MAX_USERNAME_CHARS)
name = db.StringField(max_length=70)
#[...]
email = db.EmailField(max_length=50, required=True)
#[...]
meta = {
'indexes': ['-created_at', 'email'],
'ordering': ['-created_at']
}
#[...]
到目前为止,我一直在检查控制器中“用户名”和“电子邮件”的重复,但我仍然在 mongo 中有一些用户的这些重复字段,现在我想将此字段(“用户名”和“电子邮件”)设置为是唯一的,不可为空并且是必需的。
我正在搜索文档,现在我知道我可以通过这个声明来做到这一点:
email = db.EmailField(max_length=50, required=True, unique=True)
但是如果之前创建了文档,MongoEngine 不会再次设置此设置。
所以,我从现在开始寻找一种方法(一旦解决了已经重复的问题)不会再次出现重复字段。
该应用程序正在生产中,有很多用户注册。我可以使用 mongo 控制台设置一些索引或一些。