gpt4 book ai didi

php - MongoDb:使用 ObjectID 与包含 Id 的字符串的好处?

转载 作者:IT老高 更新时间:2023-10-28 13:13:12 25 4
gpt4 key购买 nike

将 id 作为 ObjectId 存储到相关文档中与将其存储为字符串文字相比有什么好处吗?

使用 ObjectID:

{
"_id": ObjectId("522bb79455449d881b004d27"),
"username": "admin",
"folder": ObjectId("522bb79455449d881b004d23")
}

相对于字符串:

{
"_id": ObjectId("522bb79455449d881b004d27"),
"username": "admin",
"folder": "522bb79455449d881b004d23"
}

对于我将数据发送回客户端的 API...使用字符串意味着我不必“清理”数据...因为我们必须进行第二次查询才能获取文件夹无论如何都要记录...是否值得使用 ObjectId? (如果是,为什么?)

谢谢

最佳答案

最大的原因是 ObjectID 是 12 个字节,而等效的字符串是 24 个字节。在足够大的集合中,每个 ID 节省的 12 个字节真的加起来了!这些 ID 还意味着在读取或写入文档时通过网络传输的字节数也更少。

此外,一些 ODM 期望 ObjectID 用于外部文档引用,并且可能会被 ID 的字符串版本混淆。不过,我对 PHP ODM 还不够熟悉,无法说明这是否会对您产生特别的影响。

不过,关于 API 的东西,无论如何,您可能应该在将数据发送到客户端之前对其进行规范化,因为由于 Mongo 不强制执行模式,因此您可以在给定字段中包含任何类型的数据,因此,您可能有一些文档具有字符串 ID,而其他文档具有 BSON ID,并且您的 API 会很乐意将它们都发送到客户端,但其中一个可能会导致损坏。在这种特殊情况下,您应该在文档中使用 BSON ObjectID,然后将它们转换为 API 输出中的字符串。

关于php - MongoDb:使用 ObjectID 与包含 Id 的字符串的好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18680462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com