问题描述
我一直在使用 mongoengine 模型向 Flask 应用程序添加一些集合,并且代码运行良好。 我正在使用 MongoCompass 检查数据,只是注意到其中一个集合名为 notify_destination,这不是我使用的名称或其小写版本。
我的模型类是 NotifyDestination 并且没有元标记 - 那么为什么在集合名称中间有下划线?
class NotifyDestination(me.Document):
owner_id = me.ObjectIdField()
username = me.StringField()
Mongoengine 文档 (2.3.4) 只是说 集合名称默认为类名,转换为小写。
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
请注意,该文档已修复。