Именование коллекции Mongoengine с помощью UpperCamelCase?

#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
 

Обратите внимание, что документ был исправлен.