MongoDB的命名约定是什么?

What are naming conventions for MongoDB?

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

我一直在想:

  • 数据库:由用途(单数形式的单词)组成,以"db"结尾——所有小写:imagedb、resumedb、memberdb等。
  • 集合:小写复数:图像、简历,
  • 文档字段:lowercamelcase,例如memberfirstname、filename等

  • 保持简短:优化小对象的存储,服务器863。愚蠢但真实。

  • 我想,在这里应用于关系数据库的规则应该差不多相同。几十年来,RDBMS表的命名应该是单数还是复数还没有定论。

  • MongoDB会说javascript,所以使用camelcase的JS命名约定。

  • MongoDB官方文档中提到您可以使用下划线,也可以将内置标识符命名为_id(但这可能是为了表明_id是用于私有、内部、从不显示或编辑的。


  • 数据库

    • 骆驼壳
    • 在名称末尾附加db
    • 使单数(集合为复数)

    MongoDB给出了一个很好的例子:

    To select a database to use, in the mongo shell, issue the use
    statement, as in the following example:

    use myDB
    use myNewDB

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

    收藏

    • Lowercase names: avoids case sensitivity issues, MongoDB collection names are case sensitive.

    • Plural: more obvious to label a collection of something as the plural, e.g."files" rather than"file"

    • >No word separators: Avoids issues where different people (incorrectly) separate words (username <-> user_name, first_name <->
      firstname). This one is up for debate according to a few people
      around here but provided the argument is isolated to collection names
      I don't think it should be ;) If you find yourself improving the
      readability of your collection name by adding underscores or
      camelCasing your collection name is probably too long or should use
      periods as appropriate which is the standard for collection
      categorization.

    • Dot notation for higher detail collections: Gives some indication to how collections are related. For example you can be
      reasonably sure you could delete"users.pagevisits" if you deleted
      "users", provided the people that designed the schema did a good
      job.

    Content from: http://www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html

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


    即使没有为此指定任何约定,对于一对一关系,手册引用始终以Mongo文档中引用的集合命名。名称始终遵循_id结构。

    例如,在一个dogs集合中,一个文档将具有对外部文档的手动引用,命名如下:

    1
    2
    3
    4
    5
    6
    7
    {
      name: 'fido',
      owner_id: '5358e4249611f4a65e3068ab',
      race_id: '5358ee549611f4a65e3068ac',
      colour: 'yellow'
      ...
    }

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


    集合的命名约定

    为了列举一系列需要采取的预防措施:

  • 具有空字符串("")的集合不是有效的集合名称。
  • 集合名称不应包含空字符,因为这定义了集合名称的结尾。
  • 集合名称不应以前缀"system."开头,因为这是为内部集合保留的。
  • 最好不要在集合名称中包含字符"$",因为数据库可用的各种驱动程序不支持集合名称中的"$"。

    创建数据库名称时要记住的事项有:

  • 具有空字符串("")的数据库不是有效的数据库名称。
  • 数据库名称不能超过64个字节。
  • 数据库名称区分大小写,即使在不区分大小写的文件系统上也是如此。因此,最好用小写形式保留名称。
  • 数据库名称不能包含以下任何字符:"/、、.、"、*、<、>、:、、?,$和。它也不能包含单个空格或空字符。
  • 更多信息。请查看以下链接:http://www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html


    在我们得到服务器863之前,尽可能短地保留字段名是明智的。尤其是在你有很多记录的地方。

    根据您的用例,字段名可能对存储产生巨大影响。无法理解为什么这不是MongoDB的更高优先级,因为这将对所有用户产生积极影响。如果没有别的,我们可以开始对字段名进行更具描述性的描述,而不必考虑带宽和存储成本。

    请投票。


    我认为这都是个人喜好。我的首选项来自于在.NET中使用NHibernate和SQL Server,因此它们可能与其他人使用的不同。

    • 数据库:正在使用的应用程序..例如:stackoverflow
    • 集合:名称单一,它将是什么集合,例如:问题
    • 文档字段,例如:memberfirstname

    老实说,只要项目的一致性,这并不重要。开始工作,不要担心细节:p