【发布时间】:2014-08-06 23:04:30
【问题描述】:
我想用电子邮件地址命名 mongo 集合,我该怎么做?有没有办法逃脱。和@?
【问题讨论】:
-
你需要比这更彻底地解释自己。我们不明白你的意思。
-
我认为他的意思是 mongo 收藏。
-
是的,我的意思是收藏我的错
标签: mongodb
我想用电子邮件地址命名 mongo 集合,我该怎么做?有没有办法逃脱。和@?
【问题讨论】:
标签: mongodb
这样命名一个集合并没有错。在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()
所有这些方法也可供司机使用。
不确定它的用途是什么,最好只使用“电子邮件”作为文档中的键,而不是为它们创建单独的集合。
【讨论】:
正如其他人提到的'@'是有效的,它没有在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。
【讨论】:
您可以使用以下命令
db.runCommand({"create":"a@b.com"});
这将创建名称中带有 @ 的集合,您将获得以下指示集合创建的输出。
{ "ok" : 1 }
【讨论】: