如何使用 mongo db 在 django 模型上创建唯一和复合索引



我正在使用 djangi 并创建了一个字段很少的模型Person,并希望实现索引以获得有效的结果。

我已经在SQL上完成了索引,但是我第一次使用mongoengine。 我被困在如何在name列上实现唯一索引 以及如何在phone_number and email字段上实现复合索引。

感谢您的帮助

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属性,如相应的 MongoEngine 文档中所述。 下面是官方文档的示例

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
}
]
}

最新更新