在mongoDB上存储这些数据的最佳数据结构是什么?
我正在设计一个新闻发布网站。我希望允许我的用户选择他们最喜欢的新闻并将其存储在列表中。每当用户想要显示他的收藏夹时,新闻都应该按日期排序并显示 当前要存储的结构如下所示:在mongoDB上存储这些数据的最佳数据结构是什么?,mongodb,database-design,Mongodb,Database Design,我正在设计一个新闻发布网站。我希望允许我的用户选择他们最喜欢的新闻并将其存储在列表中。每当用户想要显示他的收藏夹时,新闻都应该按日期排序并显示 当前要存储的结构如下所示: favorite_table = { user_id, data } [{date:news_id},{date:news_id},{date:news_id] 所有新闻都存储在数据字段中,如下所示: favorite_table = { user_id, data } [{dat
favorite_table =
{
user_id,
data
}
[{date:news_id},{date:news_id},{date:news_id]
所有新闻都存储在数据字段中,如下所示:
favorite_table =
{
user_id,
data
}
[{date:news_id},{date:news_id},{date:news_id]
因为所有的值都是按日期排序的,所以它是存储新闻的好结构吗?每当数据到达时,我必须附加数据。我的结构适合我的目的还是有更好的结构?您的结构看起来正确。在数据字段中只存储新闻id,这是一个更智能的实现,因为每次用户将新新闻添加到收藏夹中时,存储完整文档将导致MongoDB大量移动和写入 原因是,您可能已经知道,每次更新都会创建一个新文档。参考文献: 我还认为,作为一项业务规则,您应该限制用户可以设置为喜爱的新闻项目的数量。允许此列表无限期增长对于嵌入式设计来说不是一个好主意
如果您想要无限数量的收藏夹,最好为其创建一个单独的集合,然后由用户在聚合查询中使用$match(在用户id上)和$sort(新闻项)操作符获取所有收藏夹,以便为用户获取收藏夹新闻项的排序列表。非常感谢您的信息!你知道任何关于MongoDB数据库设计架构的教程吗?实际上我从头到尾都在阅读MongoDB手册。但是你可以阅读这部分文档:我知道有一些付费教程。它们不仅是关于设计模式的,而且是有帮助的。它们可以在Pluralsight上获得:如果你无法获得订阅,如果在你的国家安全的话,也许可以尝试将它们发送给Torrent。