使用 UpperCamelCase 命名 Mongoengine 集合?

问题描述

我一直在使用 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

请注意,该文档已修复。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...