是否有一组MongoDB实体的首选命名约定,例如数据库、集合和字段名称?
我考虑的命名约定如下:
- 数据库:以目的(单数词)开头并以“db”结尾 - 全部小写: imagedb、resumedb、memberdb等。
- 集合:复数形式且全小写: images、resumes等。
- 文档字段:lowerCamelCase,例如memberFirstName、fileName等。
是否有一组MongoDB实体的首选命名约定,例如数据库、集合和字段名称?
我考虑的命名约定如下:
保持简洁:优化小对象的存储,SERVER-863。愚蠢但却是真的。
我想几乎与关系型数据库适用相同的规则也适用于这里。经过这么多年后,仍然没有统一的意见,关于RDBMS表格应该使用单数或复数...
MongoDB使用JavaScript,所以采用camelCase命名约定。
MongoDB官方文档提到可以使用下划线,还有内置标识符名为_id
(但这可能是为了指示_id
是私有的、内部的,永远不会显示或编辑)。
数据库
MongoDB提供了一个很好的例子:
要选择要使用的数据库,在mongo shell中,发出use <db>语句,如下面的示例所示:
use myDB
use myNewDB
内容来自:https://docs.mongodb.com/manual/core/databases-and-collections/#databases
集合
对于集合名称,我遵循以下建议模式,直到找到官方的MongoDB文档: - 小写名称:避免大小写敏感问题,MongoDB集合名称是区分大小写的。 - 复数形式:将一组东西标记为复数更加明显,例如“文件”而不是“文件”。 - 没有单词分隔符:避免不同人(错误地)分离单词(用户名<->user_name,first_name<->firstname)。这个问题根据一些人的说法还存在争议,但只要争论局限于集合名称,我认为就没有问题;)如果您发现通过添加下划线或使用camelCasing来改善集合名称的可读性,则该集合名称可能过长或应使用适当的句点进行分类,这是集合分类的标准。 - 使用点表示法表示更高级别的集合:给出了一些关于集合之间关系的指示。例如,如果删除了“users”,则可以合理地确定可以删除“users.pagevisits”,前提是设计架构的人做得很好。Video
→ videos
。 - Seth Falco<document>_id
结构。dogs
集合中,一个文档将具有以下命名的外部文档的手动引用:{
name: 'fido',
owner_id: '5358e4249611f4a65e3068ab',
race_id: '5358ee549611f4a65e3068ac',
colour: 'yellow'
...
}
_id
作为每个文档的标识符。owner_id
。 - danza集合的命名约定
为了给集合命名,需要注意以下几点:
创建数据库名称时需要记住以下事项:
有关更多信息,请查看以下链接:http://www.tutorial-points.com/2016/03/schema-design-and-naming-conventions-in.html
在我们解决SERVER-863之前,尽可能使用短的字段名是明智的,特别是在您有大量记录的情况下。
根据您的用例,字段名称可能对存储产生巨大影响。无法理解为什么这不是MongoDb的更高优先级,因为这将对所有用户产生积极影响。如果没有别的,我们可以开始使用更具描述性的字段名称,而不必考虑带宽和存储成本。
请投票支持。