Как добавить collation в индексы для mongodb?
Работаю с Mongoengine в Django, есть задача сортировать по полям first_name, last_name, игнорируя регистр и пробелы
поэтому добавьте collation в queryset:
collation = dict(
locale='en',
caseLevel=False,
caseFirst='off',
strength=3,
numericOrdering=True,
alternate='shifted',
maxVariable='space',
backwards=False,
)
return queryset.collation(collation).order_by('first_name','last_name')
К сожалению, мой кверисет занимает слишком много времени
Я хочу ускорить его, поэтому начал читать об индексах mongodb, но не понимаю, как правильно их добавить, я пробовал следующее: models.py
class User(UpdatedAtTimestampMixin, Document):
first_name = fields.StringField(null=True, db_field='firstName')
last_name = fields.StringField(null=True, db_field='lastName')
meta =
'collection': 'users',
'strict': False,
'indexes': [
['-is_active', 'first_name', 'last_name'],
],
}
Основной вопрос - Как включить collation в индексы? И будет ли это работать с полем null=True?
class Car(UpdatedAtTimestampMixin, Document):
model = fields.StringField(null=True, db_field='model')
brand = fields.StringField(null=True, db_field='brand')
is_stocked = fields.BooleanField(db_field='isStocked')
meta = {
'collection': 'books',
'strict': False,
'indexes': [
{'fields': ['-is_stocked', 'brand', 'model'], 'collation': collation},
],
}