gpt4 book ai didi

mongodb:仅嵌入 id 或同时嵌入 id 和名称

转载 作者:可可西里 更新时间:2023-11-01 10:04:39 26 4
gpt4 key购买 nike

我是 mongodb 的新手,请建议我如何针对以下情况更正设计模式:

我有用户集合和产品集合。产品包含 ID、标题、描述、价格等信息……用户可以为产品添加书签或点赞。目前,在用户集合中,我为喜欢的产品存储 1 个数组,为已添加书签的产品存储 1 个数组。因此,当我需要查看有关 1 个用户的信息时,我必须读出这 2 个数组,然后在产品集合中搜索以获取喜欢和添加书签的产品的标题。

//User collection
{
_id : 12345,
name: "John",
liked: [123, 456, 789],
bkmark: [123, 125]
}

//Product collection
{
_id : 123,
title: "computer",
desc: "awesome computer",
price: 12
}

现在我想我可以通过在用户集合中嵌入产品 ID 和标题来加快这个过程,这样我就不必在产品集合中搜索,只需读出并显示即可。但是如果我选择这种方式,每当产品的标题更新时,我也必须在用户集合中搜索和更新。我无法用第二种方式评估更新成本,所以我不知道哪种方式是正确的。请帮助我在它们之间做出选择。

感谢和问候。

最佳答案

您应该考虑更频繁发生的情况:产品被重命名或请求用户的信息。

您还应该考虑什么是更大的问题:用户看到过时的产品名称的时间延迟(我们说的是几秒钟,当您拥有大量用户时可能是几分钟),或者在请求时总是有更长的响应时间用户个人资料。

在不知道您的实际使用模式和要求的情况下,我会猜测这两种情况都是后者,因此您应该针对这种情况进行优化。

一般来说,不建议像规范关系数据库那样激进地规范化 MongoDB。原因是 MongoDB 无法执行 JOIN。因此,在多个文档中复制一些相关信息通常不是一个坏主意,同时接受更高的更新成本和不一致的潜在风险。

关于mongodb:仅嵌入 id 或同时嵌入 id 和名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19586119/

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