如何使用mongo db在django模型上创建唯一和复合索引
我使用的是djangi,创建了一个模型如何使用mongo db在django模型上创建唯一和复合索引,django,python-3.x,mongodb,mongoengine,Django,Python 3.x,Mongodb,Mongoengine,我使用的是djangi,创建了一个模型Person,只有很少的字段,希望实现索引以获得高效的结果 我已经在SQL上做过索引,但在mongoengine上我还是第一次做。 我一直在研究如何在name列上实现唯一索引 以及如何在电话号码和电子邮件字段上实现复合索引 谢谢你的帮助 from mongoengine import Document, fields class MongoDocument(object): def __unicode__(self): retur
Person
,只有很少的字段,希望实现索引以获得高效的结果
我已经在SQL上做过索引,但在mongoengine上我还是第一次做。
我一直在研究如何在name
列上实现唯一索引
以及如何在电话号码和电子邮件
字段上实现复合索引
谢谢你的帮助
from mongoengine import Document, fields
class MongoDocument(object):
def __unicode__(self):
return unicode_class(self)
def to_dict(self):
return convert_to_dict(self)
class Person(Document, MongoDocument):
name = fields.StringField(max_length=250)
phone_number = fields.StringField(max_length=10)
email = fields.StringField(max_length=250)
active = fields.BooleanField(default=True)
如果只需要唯一性,可以在字段定义中使用
index=True
(例如name=fields.StringField(max_length=250,unique=True)
)。如果需要复合索引或更奇特的索引定义,可以将索引定义传递给meta
属性,如相应的中所述。
下面是官方文件中的示例
class Page(Document):
category = IntField()
title = StringField()
rating = StringField()
created = DateTimeField()
meta = {
'indexes': [
'title',
'$title', # text index
'#title', # hashed index
('title', '-rating'),
('category', '_cls'),
{
'fields': ['created'],
'expireAfterSeconds': 3600
}
]
}
根据mongoengine文档,您只需向字段添加
unique=True
。我ename=fields.StringField(最大长度=250,唯一性=True)