在MongoDB中是否有一个名称集合的约定?
我想知道是否有一个数据库收集的公约,如:
PageVisit
或page_visit
。
这些符号有什么优点/缺点吗?
一般惯例是:
- 小写名称 :这样可以避免区分大小写的问题,因为MongoDB集合名称区分大小写 。
- 复数 :更加明显地将一些东西的集合标记为复数,例如“文件”而不是“文件”
- 没有词分隔符 :避免不同的人(不正确)分隔词(用户名< – > user_name,first_name < – >名)。 这个是根据这里的一些人的辩论,但提供的论点是孤立的集合名称,我认为它应该是)如果你发现自己提高你的集合名称的可读性通过添加下划线或驼峰集合名称可能太长,或者应该使用恰当的时间段,这是集合分类的标准。
- 更高细节集合的点符号 :给出了集合如何相关的一些指示。 例如,如果您删除了“用户”,只要devise架构的人员做得很好,就可以合理确信您可以删除“users.pagevisits”;)
例子:
users pagevisits users.pagevisits
字段名称约定(应该)遵循一些相同的逻辑,虽然骆驼套是相当普遍的。
只要避免在集合名称中使用连字符。
这只是因为,如果你使用下面两个调用的cli,第一个是无效的JavaScript:
db.foo-bar.find(); db['foo-bar'].find();
他们在function上是完全相同的,但是第二个更麻烦一些,而且没有完成。
除此之外,优点/缺点取决于你使用的collections。 一致性比您select的会议更重要。
在http://docs.mongodb.org/manual/reference/limits/中; ,手册指出集合名称应以下划线 ('_')或字母字符开头,并且不能:
- 包含$。
- 是一个空string(例如“”)。
- 包含空字符。
- 从系统开始。 字首。 (保留供内部使用。)
但是,如果按照规则创build一个以“_”开头的集合(如“_TWII”),则在您要删除集合时会遇到麻烦。 请参阅下面的testing和解决方法。 collections“_TWII”创build于“人物”下。
> 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”db下删除_TWII集合的捷径:
> db.createCollection('^TWII') { "ok" : 1 } > db.getCollection('^TWII').drop() true