【发布时间】:2011-08-20 10:33:36
【问题描述】:
对于 MongoDB 实体(例如数据库、集合、字段名)是否有一组首选命名约定?
我的想法是这样的:
- 数据库:由目的(单数)组成,以“db”结尾——全部小写:imagedb、resumedb、memberdb 等。
- 收藏:小写复数:图片、简历、
- 文档字段:lowerCamelCase,例如memberFirstName、fileName 等
【问题讨论】:
标签: mongodb naming-conventions
对于 MongoDB 实体(例如数据库、集合、字段名)是否有一组首选命名约定?
我的想法是这样的:
【问题讨论】:
标签: mongodb naming-conventions
保持简短:Optimizing Storage of Small Objects,SERVER-863。愚蠢但真实。
我想适用于关系数据库的几乎相同的规则应该适用于此。而且经过这么多年,RDBMS 表应该命名为单数还是复数仍然没有一致意见......
MongoDB 使用 JavaScript,因此请使用 camelCase 的 JS 命名约定。
MongoDB 官方文档提到你可以使用下划线,内置标识符也被命名为_id(但这可能是为了表明_id 是私有的,内部的,从不显示或编辑。
【讨论】:
_id 最有可能带有下划线前缀,以遵循通用的 JavaScript 约定,该约定表示密钥是内部/私有密钥。换句话说,_id 不打算被编辑或呈现给查看集合数据的任何人。
我认为这都是个人喜好。我的偏好来自于在 .NET 中使用 NHibernate 和 SQL Server,因此它们可能与其他人使用的不同。
老实说,这并不重要,只要它对项目保持一致即可。开始工作,不要担心细节:P
【讨论】:
在我们得到SERVER-863 之前,建议保持字段名称尽可能短 尤其是在你有很多记录的地方。
根据您的用例,字段名称可能会对存储产生巨大影响。无法理解为什么这不是 MongoDb 的更高优先级,因为这将对所有用户产生积极影响。如果不出意外,我们可以开始对字段名称进行更具描述性,而无需考虑带宽和存储成本。
请vote。
【讨论】:
即使没有为此指定任何约定,manual references 也始终以 Mongo 文档中引用的集合命名,用于一对一的关系。名称始终遵循<document>_id 的结构。
例如,在dogs 集合中,文档将手动引用外部文档,其名称如下:
{
name: 'fido',
owner_id: '5358e4249611f4a65e3068ab',
race_id: '5358ee549611f4a65e3068ac',
colour: 'yellow'
...
}
这遵循 Mongo 将 _id 命名为每个文档的标识符的约定。
【讨论】:
owner_id
集合的命名约定
为了命名一个集合,需要采取一些预防措施:
创建数据库名称时要记住的事项是:
了解更多信息。请查看以下链接:http://www.tutorial-points.com/2016/03/schema-design-and-naming-conventions-in.html
【讨论】:
数据库
MongoDB 举了一个很好的例子:
要选择要使用的数据库,在 mongo shell 中,发出 use
语句,如下例所示: 使用 myDB
使用 myNewDB
内容来自:https://docs.mongodb.com/manual/core/databases-and-collections/#databases
收藏
小写名称:避免区分大小写问题,MongoDB 集合名称区分大小写。
复数:更明显地将某物的集合标记为复数,例如“文件”而不是“文件”
>无单词分隔符: 避免不同的人(错误地)分隔单词(用户名 用户名、名字
名)。根据少数人的说法,这个有待商榷
在这里,但前提是参数与集合名称隔离 我不认为它应该是 ;) 如果你发现自己在改进
通过添加下划线或
来提高您的收藏名称的可读性 camelCasing 您的收藏名称可能太长或应该使用
适当的时期,这是收集的标准
分类。更详细集合的点表示法: 给出集合之间如何相关的一些指示。例如你可以 有理由确定如果您删除了“users.pagevisits”,您可以删除 “用户”,前提是设计架构的人做得很好 工作。
对于集合,我会遵循这些建议的模式,直到找到官方 MongoDB 文档。
【讨论】: