Is there a convention to name collection in MongoDB?
我想知道是否存在数据库集合的约定,例如:
这些符号有什么优点/缺点吗?
一般惯例是:
- 小写名称:这避免了区分大小写的问题,因为MongoDB集合名称区分大小写。
- 复数:更明显的是将某个集合标记为复数,例如"文件"而不是"文件"。
- 无单词分隔符:避免不同的人(错误地)使用不同的单词(用户名<->用户名,名<->名)分隔的问题。根据这里的一些人,这一个有待讨论,但前提是这个论点与集合名称是孤立的,我认为它不应该是;)如果你发现你自己通过添加下划线或用camelscasing来提高集合名称的可读性,你的集合名称可能太长,或者应该使用适当的句点,也就是集合分类的标准。
- 更高细节集合的点表示法:给出了集合如何相关的一些指示。例如,如果删除了"users",则可以合理地确定可以删除"users.pagevisits",前提是设计架构的人员做得很好;)
示例:
1 2 3 | users pagevisits users.pagevisits |
号
字段名约定(应该)遵循一些相同的逻辑,尽管camel大小写这些是相当常见的。
只需避免在集合名称中使用连字符。
这仅仅是因为,如果使用下面两个调用的cli,第一个调用是无效的javascript:
1 2 | db.foo-bar.find(); db['foo-bar'].find(); |
它们在功能上都是相同的,但是第二个对输入来说稍微有点烦人,而且标签不完整。
除此之外,优势/劣势取决于您对集合的使用。保持一致比你选择的惯例更重要。
在http://docs.mongodb.org/manual/reference/limits/中,手册规定集合名称应以下划线("uu")或字母字符开头,并且不能:
- contain the $.
- be an empty string (e.g."").
- contain the null character.
- begin with the system. prefix. (Reserved for internal use.)
号
但是,如果您遵循规则并创建一个以"uu"作为开头字母的集合,例如"twii",则当您想要删除集合时会遇到问题。请参阅下面的测试和修复方法。集合"twii"是在"people"db下创建的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | > show collections _TWII employees system.indexes > db._TWII.drop() 2015-02-19T16:34:56.738-0800 TypeError: Cannot call method 'drop' of undefined > use admin switched to db admin > db.runCommand({renameCollection:"people._TWII",to:"people.TWII"}) {"ok" : 1 } > use people switched to db people > show collections TWII employees system.indexes > db.TWII.drop() true > show collections employees system.indexes > |
"People"数据库下删除"Twii"集合的快捷方式:
1 2 3 4 | > db.createCollection('^TWII') {"ok" : 1 } > db.getCollection('^TWII').drop() true |
。