#mongoengine
#mongoengine
Вопрос:
Я добавлял некоторые коллекции в приложение Flask, используя модели mongoengine, и код работает нормально. Я проверял данные с помощью MongoCompass и только что заметил, что одна из коллекций называется notify_destination, которая НЕ является именем, которое я использовал, или его строчной версией.
Мой класс модели — NotifyDestination, и в нем нет мета-тега — так почему подчеркивание в середине имени коллекции?
class NotifyDestination(me.Document):
owner_id = me.ObjectIdField()
username = me.StringField()
В документации Mongoengine (2.3.4) просто говорится
, что имя коллекции по умолчанию является именем класса, преобразованным в нижний регистр.
Является ли вставка подчеркивания нормальным поведением MongoEngine из-за того, что я использую UpperCamelCase?
У меня еще есть время указать и принудительно ввести имя, используя тег meta = {} в модели, если это поведение официально не задокументировано где-либо еще.
Ответ №1:
(участник mongoengine здесь) Да, это поведение по умолчанию, документ неточный, но в основном он преобразуется из UpperCamelCase в snake_case.
Это означает, что
class User(Document):
# will have "user" as default collection name
class MyCompanyUser(Document):
# will have "my_company_user" as default collection name
class USACompany(Document):
# will have "u_s_a_company" as default collection name
Обратите внимание, что документ был исправлен.