【问题标题】:How to name mongodb collections as email names如何将 mongodb 集合命名为电子邮件名称
【发布时间】:2014-08-06 23:04:30
【问题描述】:

我想用电子邮件地址命名 mongo 集合,我该怎么做?有没有办法逃脱。和@?

【问题讨论】:

  • 你需要比这更彻底地解释自己。我们不明白你的意思。
  • 我认为他的意思是 mongo 收藏。
  • 是的,我的意思是收藏我的错

标签: mongodb


【解决方案1】:

这样命名一个集合并没有错。在collection names 的文档中有一个部分,在一般限制标题下:

基本上这些:

在 2.2 版中,集合名称不能:

  • 包含 $。
  • 为空字符串(即“”)。

因此,除了 mongoDb shell 下可用的“速记”变量表示法之外,您似乎缺少真正的运算符:

 db.createCollection("this@my.com")
 db.getCollection("this@my.com").insert({ a: 1 })
 db.getCollection("this@my.com").find()

所有这些方法也可供司机使用。

不确定它的用途是什么,最好只使用“电子邮件”作为文档中的键,而不是为它们创建单独的集合。

【讨论】:

    【解决方案2】:

    正如其他人提到的'@'是有效的,它没有在collection name restrictions 中注明。

    您可能还需要考虑其他一些事项:

    • MongoDB 集合的最大长度为 120 字节(我认为它最终为 116 个字符)。电子邮件地址的最大长度为 254 个字符。

    • MongoDB 中的最大集合数有限制,具体取决于命名空间文件的大小。使用默认值,您基本上被限制为 24,000 个集合 + 索引。请参阅MongoDB Limits and Thesholds 和这个问题 [limits of number of collections in databases。鉴于此限制,即使您要使用更大的命名空间文件将其提高到最大值,您也应该考虑在您的特定应用程序中是否有可能超出此限制

    • 跨集合查询并不容易,因此请确保您没有任何可能需要此操作的用例

    假设您可能正在构建某种多租户应用程序,那么有许多资源可以权衡各种选项。查看Building Multi-tenant applications on MongoDB

    【讨论】:

      【解决方案3】:

      您可以使用以下命令

      db.runCommand({"create":"a@b.com"});
      

      这将创建名称中带有 @ 的集合,您将获得以下指示集合创建的输出。

      { "ok" : 1 }
      

      【讨论】:

        猜你喜欢
        • 2013-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-19
        • 1970-01-01
        • 1970-01-01
        • 2015-09-10
        • 2013-06-09
        相关资源
        最近更新 更多