MongoDB的命名约定是什么?

And*_*rey 166 naming-conventions mongodb

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

我在考虑这些问题:

  • 数据库:由目的(单数形式的单词)和以"db"结尾 - 全部小写:imagedb,resumedb,memberdb等.
  • 收藏:小写复数:图像,简历,
  • 文档字段:lowerCamelCase,例如memberFirstName,fileName等

Tom*_*icz 118

  1. Keep'em简短:优化小物件的存储,SERVER-863.傻但真实.

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

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

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

  • 3和4是矛盾的 - JS更喜欢camelcase,Mongo似乎更喜欢下划线......但是当有疑问时,请选择下划线.习惯使用非拉丁字母的人会感谢你. (89认同)
  • 我不确定我会说"JS更喜欢camelcase".JS本身没有偏好,但也许说*大多数*JS程序员倾向于使用驼峰案例. (4认同)
  • @treeface 我认为马特指的是 JS 的内置方法在节点和浏览器中都使用驼峰命名法 (4认同)
  • 内置标识符 `_id` 最有可能带有下划线前缀,以遵循通用的 JavaScript 约定,该约定指示密钥是内部/私有密钥。换句话说,`_id` 不会被编辑或呈现给查看集合数据的任何人。 (3认同)
  • 有关单数与复数辩论,请参阅此问题:http://stackoverflow.com/questions/338156/table-naming-dilemma-singular-vs-plural-names (2认同)
  • 随着 WiredTiger 和压缩的到来,字段应该有短名称不再是事实。 (2认同)

BBi*_*Bi7 43

数据库

  • 骆驼香烟盒
  • 在名称末尾添加DB
  • 单数(集合是复数)

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

要选择要使用的数据库,请在mongo shell中发出use <db>语句,如以下示例所示:

使用myDB
使用myNewDB

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

COLLECTIONS

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

  • 复数:更明显地将一些东西标记为复数,例如"文件"而不是"文件"

  • >没有单词分隔符:避免不同的人(错误地)单独的单词(用户名< - > user_name,first_name < - >
    firstname)的问题.根据
    这里的一些人的说法,这个问题可以讨论,但是如果你认为它应该是集合名称,那么这个论点是孤立的;)如果你发现自己
    通过添加下划线或者
    camelCasing来提高你的集合名称的可读性名称可能太长或应该使用
    适当的时间段,这是收集
    分类的标准.

  • 更高细节集合的点表示法:为集合的相关性提供一些指示.例如,如果您删除了"users",您可以合理地确定可以删除"users.pagevisits",前提是设计架构的人员做得很好.

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

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


dan*_*nza 22

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

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

{
  name: 'fido',
  owner_id: '5358e4249611f4a65e3068ab',
  race_id: '5358ee549611f4a65e3068ac',
  colour: 'yellow'
  ...
}
Run Code Online (Sandbox Code Playgroud)

这遵循Mongo约定_id为每个文档命名标识符.


Rex*_*gan 7

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

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

老实说,这并不重要,只要它与项目一致即可。开始工作吧,不要担心细节:P


Shr*_*kar 6

收集的命名约定

为了命名一个集合,几乎没有采取什么预防措施:

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

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

  5. 具有空字符串("")的数据库不是有效的数据库名称.
  6. 数据库名称不能超过64个字节.
  7. 数据库名称区分大小写,即使在不区分大小写的文件系统上也是如此.因此,将名称保持为小写是好的.
  8. 数据库名称不能包含以下任何字符"/,\,.,",*,<,>,:,|,?,$,".它也不能包含单个空格或空字符.

欲获得更多信息.请查看以下链接:http://www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html