我正在使用 Flask 和 MongoDB 开发一个 Web 应用程序。我使用 (Flask-)MongoKit 来定义一个模式来验证我的数据。
在我的数据库中,有一个名为“users”的集合(见下文),其中包含一个字段“email”。我尝试按照 MongoKit 文档 (http://namlook.github.com/mongokit/indexes.html) 中的规定在该字段上创建唯一索引。但是,当我通过 MongoDB 客户端 shell 检查集合索引时,根本没有索引“电子邮件”。
我在网上发现了一个类似的问题:“唯一索引不起作用”(https://github.com/namlook/mongokit/issues/98)
有人知道为什么它不起作用吗?
用户收藏:
@db.register
class User(Model):
__collection__ = 'users'
structure = {
'first_name': basestring,
'last_name': basestring,
'email': basestring,
'password': unicode,
'registration_date': datetime,
}
required_fields = ['first_name', 'last_name', 'email', 'password', 'registration_date']
default_values = {
'registration_date': datetime.utcnow,
}
# Create a unique index on the "email" field
indexes = [
{
'fields': 'email', # note: this may be an array
'unique': True, # only unique values are allowed
'ttl': 0, # create index immediately
},
]
db.users.getIndexes() 输出:
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "youthmind.users",
"name" : "_id_"
},
]
请注意,我也尝试不使用 'ttl':0,并且能够使用以下代码创建索引:
db.users.create_index('email', unique=True)
我认为这直接使用了 pymongo Connection 对象。
在此先感谢您的帮助。