Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB-跨集合使用电子邮件id作为标识符_Mongodb - Fatal编程技术网

MongoDB-跨集合使用电子邮件id作为标识符

MongoDB-跨集合使用电子邮件id作为标识符,mongodb,Mongodb,我有一个用户集合,其中的电子邮件id和\u id是唯一的。我想跨各种集合存储用户数据。我想在这些集合中使用email_id作为标识符。因为它很容易在shell中查询那些具有email_id而不是复杂ObjectId的集合 这条路对吗?在使用大的emailid创建索引时,它会带来性能问题吗 也不要考虑这个选项,如果您有计划启用EMAILID ID更改 未来的选择 虽然关系数据库鼓励您规范化数据并将其分散到许多表中,但这种方法通常不是MongoDB的最佳方法。MongoDB不支持对多个集合甚至同一集

我有一个用户集合,其中的电子邮件id\u id是唯一的。我想跨各种集合存储用户数据。我想在这些集合中使用email_id作为标识符。因为它很容易在shell中查询那些具有email_id而不是复杂ObjectId的集合

这条路对吗?在使用大的emailid创建索引时,它会带来性能问题吗

也不要考虑这个选项,如果您有计划启用EMAILID ID更改 未来的选择


虽然关系数据库鼓励您规范化数据并将其分散到许多表中,但这种方法通常不是MongoDB的最佳方法。MongoDB不支持对多个集合甚至同一集合中的多个文档进行联接。因此,您应该尝试以一种方式来设计数据库文档,即通过搜索单个文档来统计每个查询。这意味着将用户的所有信息存储在一个文档中通常是一个好主意

例外情况是,用户的某些数据点无限期增长(如用户在论坛上发表的帖子)。首先,MongoDB文档有大小限制;其次,当文档大小增加时,数据库需要频繁地重新分配其硬盘空间。这会减慢写入速度并导致数据库中出现碎片。在这种情况下,最好将每个实体放在不同的集合中

当您搜索相等时,索引覆盖的字段的大小并不重要。当你在email_id上有一个唯一的索引时,它应该和按_id搜索一样快