什么是MongoDB的命名约定?

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

我正在这样思考:

  • 数据库:包含目的(以单数forms)并以“db”结尾 – 全部小写:imagedb,resumedb,memberdb等
  • 作品集:plural in lower case:图片,简历,
  • 文档字段:lowerCamelCase,例如memberFirstName,fileName等
  1. Keep'em简称: 优化小对象的存储 , SERVER-863 。 傻,但真实。

  2. 我想几乎适用于关系数据库的规则应该适用于此。 而在这么多十年之后,RDBMS表格应该被命名为单数还是复数,仍然没有达成一致。

  3. MongoDB讲的JavaScript,所以利用JS命名约定。

  4. MongoDB官方文档似乎更喜欢下划线,也内置的标识符被命名为_id

即使没有关于此的约定, 手动引用也会在Mongo文档中被引用的集合之后一致地命名,以便进行一对一的关系。 名字总是遵循<document>_id的结构。

例如,在一个dogs集合中,一个文档可以手动引用这样的外部文档:

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

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

收集的命名约定

为了说明一个集合,要采取一些预防措施:

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

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

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

了解更多信息。 请检查以下链接: http : //www.learnit.net.in/2016/03/schema-design-and-naming-conventions-in.html

直到我们得到SERVER-863保持字段名越短越好,特别是在有很多logging的地方。

根据您的使用情况,字段名称可能会对存储产生巨大影响。 不能理解为什么这不是MongoDb的更高优先级,因为这将对所有用户产生积极的影响。 如果没有别的,我们可以开始更多地描述我们的字段名称,而不必考虑带宽和存储成本。

请投票 。

我认为这全是个人喜好。 我的偏好来自使用.NET中的NHibernate和SQL Server,所以它们可能与别人使用的不同。

  • 数据库:正在使用的应用程序..例如:Stackoverflow
  • 作品集:Singular in name,它将成为一个集合,例如:Question
  • 文档字段,例如:MemberFirstName

老实说,只要这个项目是一致的,这并不重要。 刚开始工作,不要泄露细节:P

数据库

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

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

要select要使用的数据库,请在mongo shell中发出use语句,如下例所示:

使用myDB
使用myNewDB

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

COLLECTIONS

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

  • 复数:更加明显地将一些东西的集合标记为复数,例如“文件”而不是“文件”

  • >没有单词分隔符:避免了不同的人(不正确)将单词(用户名< – > user_name,first_name < – >
    名字)。 这个是根据less数人辩论的
    在这里,但提供的论据是孤立的集合名称,我不认为这应该是)如果你发现自己改善
    通过添加下划线或
    骆驼你的collections名称可能太长或应该使用
    这是收集的标准
    分类。

  • 更高细节集合的点符号:给出了集合如何相关的一些指示。 例如,如果您删除了“用户”,只要devise架构的人员做得很好,您可以合理确信可以删除“users.pagevisits”。

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

对于集合,我遵循这些build议的模式,直到find正式的MongoDB文档。