让我们看看一个简单的“坏”例子:假设我有两个集合'person'和'address'。并且让我们在'地址'中假设我想存储地址关联的人的'_id'。将“引用键”项存储为“地址”集合中的ObjectId vs字符串是否有任何好处?将文档的id保存为另一个文档ObjectId或String
我觉得像把它们存储为字符串不应该伤害,但我没有在mongo工作很长时间,也不知道如果我遵循这种模式会不会伤害到道路。使用人Store _Id as object or string in MongoDB? 而其说的ObjectId是快了,我认为它的真实,如果你正在读取/父集合中使用的ObjectId(用于例如更新读取/更新“人”的收集:
我在这里阅读文章。 ._id作为ObjectId),但我找不到任何暗示如果通过其他集合中的字符串id表示进行搜索(在我们的示例中,通过person._id作为字符串搜索地址集合中的内容),结果可能为true
您的反馈非常感谢。
如何,这是一个不同的问题? ObjectId以12字节存储。 ObjectId的十六进制字符的字符串是24个字节(仅适用于字符,正尾随后加大小参考)。更多的空间,更多的时间。比较慢!这应该不难解决。 –
你是对的,正试图用烬数据处理事情,并没有看到转换objectid到字符串,并返回到objectId很多点,我寻找方便而不是性能。今天早上我做了一个搜索,这个问题也被问到了其他的形式。 –
为了记录您在这里接受的答案,提出了另一个重要的观点。无法手动将其重新转换为字符串或ObjectId值,您无法在不同的“类型”上将事物匹配在一起。我个人更喜欢所有的外部API使用扩展的JSON格式'{“_id”:{“$ oid”:“56ea9e8bb1e015d13b376db5”}}'因为如果我的客户端实际上可以反序列化回'ObjectId',那么我让它知道数据实际上是什么。 –