MongoDB的命名约定是什么?

时间:2011-05-06 19:23:17

标签: mongodb naming-conventions

是否有一组MongoDB权限的首选命名约定,例如数据库,集合,字段名称?

我正在思考这些问题:

  • 数据库:包含目的(单词中的单词)和以“db”结尾 - 全部小写:imagedb,resumedb,memberdb等。
  • 收藏:小写复数:图片,简历,
  • 文档字段:lowerCamelCase,例如memberFirstName,fileName等

6 个答案:

答案 0 :(得分:112)

  1. Keep'em简短:Optimizing Storage of Small ObjectsSERVER-863。傻但是真的。

  2. 我想几乎适用于关系数据库的规则应该适用于此处。几十年后,仍然没有人同意RDBMS表是否应该被命名为单数或复数......

  3. MongoDB使用JavaScript,因此使用camelCase的JS命名约定。

  4. MongoDB官方文档提到您可以使用下划线,内置标识符也名为_id(但这可能是为了表明_id是私有的,内部的,从不显示或编辑。

答案 1 :(得分:38)

<强> DATABASE

  • 驼峰
  • 在名称末尾添加DB
  • 使单数(集合是复数)

MongoDB提供了一个很好的例子:

  

要选择要使用的数据库,请在mongo shell中发出use&lt; db&gt;   声明,如下例所示:

     

使用myDB
  使用myNewDB

内容来自:https://docs.mongodb.com/manual/core/databases-and-collections/#databases

<强>集合

  
      
  • 小写名称:避免区分大小写问题,MongoDB集合名称区分大小写。

  •   
  • 复数:更明显地将某些东西的集合标记为复数,例如&#34;文件&#34;而不是&#34;文件&#34;

  •   
  • &gt;没有单词分隔符:避免不同的人(错误地)单独的单词(用户名&lt; - &gt; user_name,first_name&lt; - &gt;
      名字)。根据少数人的说法,这个问题正在讨论中   在这附近,但提供的参数与集合名称隔离   我不认为它应该是;)如果你发现自己在改善   通过添加下划线或
    来集合您的集合名称的可读性   camelCasing您的收藏名称可能太长或应该使用
      适当的时期,这是收集的标准   分类

  •   
  • 更高细节集合的点表示法:为集合的相关性提供一些指示。例如,你可以   合理地确定你可以删除&#34; users.pagevisits&#34;如果你删除了   &#34;用户&#34;,只要设计架构的人员做得很好   工作

  •   
     

内容来自:http://www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html

对于集合,我会遵循这些建议的模式,直到找到官方的MongoDB文档。

答案 2 :(得分:20)

即使没有为此指定约定,manual references也始终以Mongo文档中引用的集合命名,用于一对一关系。名称始终遵循结构<document>_id

例如,在dogs集合中,文档将手动引用外部文档,如下所示:

{
  name: 'fido',
  owner_id: '5358e4249611f4a65e3068ab',
  race_id: '5358ee549611f4a65e3068ac',
  colour: 'yellow'
  ...
}

遵循Mongo惯例,为每个文档命名_id标识符。

答案 3 :(得分:6)

收集的命名约定

为了给收集品命名,我们采取一些预防措施:

  1. 带有空字符串(“”)的集合不是有效的集合名称。
  2. 集合名称不应包含空字符,因为它定义了集合名称的结尾。
  3. 集合名称不应以前缀“system。”开头,因为这是为内部集合保留的。
  4. 最好不要在集合名称中包含字符“$”,因为可用于数据库的各种驱动程序不支持集合名称中的“$”。

    创建数据库名称时要记住的事项是:

  5. 带有空字符串(“”)的数据库不是有效的数据库名称。
  6. 数据库名称不能超过64个字节。
  7. 数据库名称区分大小写,即使在不区分大小写的文件系统上也是如此。因此,将名称保持为小写是好的。
  8. 数据库名称不能包含以下任何字符“/,\,。,”,*,&lt;,&gt;,:,|,?,$,“。它也不能包含单个空格或空字符。
  9. 了解更多信息。请查看以下链接:http://www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html

答案 4 :(得分:2)

我认为这都是个人喜好。我的偏好来自在.NET中使用NHibernate与SQL Server,因此它们可能与其他人使用的不同。

  • 数据库:正在使用的应用程序..例如:Stackoverflow
  • 收藏:名义上的单数,它将是一个集合,例如:问题
  • 文档字段,例如:MemberFirstName

老实说,只要它与项目一致,它就没那么重要了。只是开始工作,不要赘述:P

答案 5 :(得分:2)

在我们得到SERVER-863之前,建议尽可能缩短字段名称 特别是在你有很多记录的地方。

根据您的使用情况,字段名称会对存储产生巨大影响。不明白为什么这不是MongoDb的优先级,因为这会对所有用户产生积极影响。如果不出意外,我们可以开始使用我们的字段名称进行描述,而不必考虑带宽和带宽。存储成本。

vote