使用 UpperCamelCase 命名 Mongoengine 集合?
Mongoengine collection naming with UpperCamelCase?
我一直在使用 mongoengine 模型向 Flask 应用程序添加一些集合,代码运行良好。
我正在使用 MongoCompass 检查数据,只是注意到其中一个集合名为 notify_destination,这不是我使用的名称或其小写版本。
我的模型 class 是 NotifyDestination 并且没有元标记 - 那么为什么集合名称中间的下划线?
class NotifyDestination(me.Document):
owner_id = me.ObjectIdField()
username = me.StringField()
Mongoengine 文档 (2.3.4) 只是说
集合名称默认为class的名称,转换为小写。
由于我使用 UpperCamelCase,插入下划线是 MongoEngine 的正常行为吗?
如果此行为未在其他地方正式记录,我还有时间在模型中使用 meta = {} 标记指定并强制命名。
(此处为 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
请注意,文档已修复。
我一直在使用 mongoengine 模型向 Flask 应用程序添加一些集合,代码运行良好。 我正在使用 MongoCompass 检查数据,只是注意到其中一个集合名为 notify_destination,这不是我使用的名称或其小写版本。
我的模型 class 是 NotifyDestination 并且没有元标记 - 那么为什么集合名称中间的下划线?
class NotifyDestination(me.Document):
owner_id = me.ObjectIdField()
username = me.StringField()
Mongoengine 文档 (2.3.4) 只是说 集合名称默认为class的名称,转换为小写。
由于我使用 UpperCamelCase,插入下划线是 MongoEngine 的正常行为吗?
如果此行为未在其他地方正式记录,我还有时间在模型中使用 meta = {} 标记指定并强制命名。
(此处为 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
请注意,文档已修复。