gpt4 book ai didi

mongodb - 将另一个文档中的文档 ID 保存为 ObjectId 或 String 是否更好?

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

让我们举一个简单的“坏”例子:假设我有 2 个集合 'person' 和 'address'。并假设在“地址”中我想存储与地址相关联的人的“_id”。将此“引用键”项存储为“地址”集合中的 ObjectId 与字符串有什么好处?

我觉得将它们存储为字符串应该不会受到伤害,但我在 mongo 中工作的时间不长,不知道如果我遵循这种模式是否会受到伤害。

我在这里阅读了这篇文章:Store _Id as object or string in MongoDB?它说 ObjectId 更快,如果您使用父集合中的 ObjectId 获取/更新,我认为它是正确的(例如,使用 person._id 作为 ObjectId 获取/更新“人”集合),但我找不到如果在其他集合中按字符串 id 表示搜索,任何暗示相同的东西都可能是正确的(在我们的示例中,按 person._id 作为字符串在地址集合中搜索)

非常感谢您的反馈。

最佳答案

无论性能如何,您都应该以与您所引用的 _id 字段相同的格式存储“引用键”。这意味着,如果您推荐的文件是:

{ _id: ObjectID("68746287..."), value: 'foo' }

那么您将其称为:

{ _id: ObjectID(…parent document id…), subDoc: ObjectID("68746287...")

如果您指向的文档有一个字符串作为 ID,那么它看起来像:

{ _id: "derick-address-1", value: 'foo' }

那么您将其称为:

{ _id: ObjectID(…parent document id…), subDoc: "derick-address-1" }

除此之外,因为您在谈论人员和地址,所以将它们完全放在两个文档中可能更有意义,而是嵌入文档:

{ _id: ObjectID(…parent document id…),
'name' : 'Derick',
'addresses' : [
{ 'type' : 'Home', 'street' : 'Victoria Road' },
{ 'type' : 'Work', 'street' : 'King William Street' },
]
}

关于mongodb - 将另一个文档中的文档 ID 保存为 ObjectId 或 String 是否更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36051713/

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