gpt4 book ai didi

mongodb数据库设计(产品建议)

转载 作者:可可西里 更新时间:2023-11-01 09:37:36 24 4
gpt4 key购买 nike

我计划为我的网站开发一个模块。类似于 www.tastekid.com

我的站点上有用户和产品。

例如;第一个用户喜欢 2、4、56、57 个产品(数字是产品的 ID)。第二个(用户)喜欢 1、4、56、57 个产品。

我应该能够搜索同时喜欢 56 和 57 的人,并查看这些用户的常用产品 ID 是什么?在本例中是 4。然后是 1 或 2。

我该如何设计?引用还是嵌入?或者我不知道的任何其他解决方案...

我希望我的问题很清楚。谢谢。

最佳答案

关于模式设计的 Mongo 文档应该为您提供一个很好的起点: http://www.mongodb.org/display/DOCS/Schema+Design有一个关于嵌入和链接的部分,以及一个包含两者实现的示例。

这是 Stack Overflow 上关于嵌入与链接主题的另一个问题,其中包含非常详细的答案: MongoDB relationships: embed or reference?

标题为“在 Mongo 中更新数据”的 Mongo 文档还包含有关嵌入文档和引用文档的部分: http://www.mongodb.org/display/DOCS/Updating+Data+in+Mongo

以上链接应该可以很好地理解嵌入文档和引用文档之间的区别,并为您的架构设计提供一些好的想法。

对于您的具体示例,您似乎正在寻找喜欢相同产品的用户。一个可能的解决方案是包括每个用户喜欢的产品 ID 数组,就像这样。

> db.users.find()
db.users.save({ "_id" : 1, "name" : "Joe", "LikesProducts":[2,4,56,57] });
db.users.save({ "_id" : 2, "name" : "Jane", "LikesProducts":[1,4,56,57] });

要找出哪些用户同时喜欢产品 56 和 57,您可以运行以下查询:

> db.users.find({LikesProducts:{$all:[56,57]}})
{ "_id" : 1, "name" : "Joe", "LikesProducts" : [ 2, 4, 56, 57 ] }
{ "_id" : 2, "name" : "Jane", "LikesProducts" : [ 1, 4, 56, 57 ] }
>

有关 $all 运算符的更多信息可以在“高级查询”文档中找到: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24all

然后您的应用程序可以确定哪些其他产品(如果有)出现在两个用户的“LikesProducts”数组中。

希望这会为您的应用程序提供一些想法。如果您有任何其他问题,社区将为您提供帮助!

关于mongodb数据库设计(产品建议),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10075254/

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