在这种情况下,我有一个用户模式,其中包含一个名为“username”的唯一字段。同时,mongo自动创建自己的唯一键“_id”。
我注意到,在我的许多模式中,我需要一个“用户名”数组和“I”数组。这有时是相当多余的,所以我的问题是:
通过"_id“进行查找比查找”用户名“(假设为10个字符串)更快吗?如果它们是相同的,那么使用我的唯一标识符用户名作为_id的值是否可行?
发布于 2013-12-08 01:54:19
如果您的数据自然有一个必需的、唯一的字段,那么使用该值作为您的_id是非常好的。
只要字段的数据在大小上可以与ObjectId ( 12字节)相比,那么性能就应该是相同的。一个10个字符串是20个字节,所以用户名的索引将占用更多的内存,但可能不足以在性能上产生不同的效果。
由于您使用的是Mongoose,所以您还可以创建一个虚拟字段(名为username),该字段还可以使用更具有描述性的名称公开_id字段。
发布于 2014-08-20 03:32:49
我认为这很好,除非你将来会改变你的用户名的结构。因此,我认为最好只使用ObjectId()作为ID,如果需要的话,再添加一个额外的字段username。
https://stackoverflow.com/questions/20448504
复制相似问题