FlaskとMongoDBを使用してWebアプリケーションを開発しています。そして、(Flask-)MongoKitを使用して、データを検証するためのスキーマを定義します。
私のデータベースには、「email」フィールドを含む「users」(以下を参照)というコレクションがあります。MongoKitのドキュメント(http://namlook.github.com/mongokit/indexes.html)で指定されているように、そのフィールドに一意のインデックスを作成しようとしています。ただし、MongoDBクライアントシェルを介してコレクションインデックスを確認すると、インデックス「email」がまったくありません。
ネット上で同様の問題を見つけました:「一意のインデックスが機能しない」(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)
これはpymongoConnectionオブジェクトを直接使用していると思います。
よろしくお願いします。