【发布时间】:2017-03-13 20:09:16
【问题描述】:
我有一个小问题。我想创建一个用户可以喜欢帖子的软件。现在我想知道如何保存喜欢。我可以这样做:
{
_id:"123456789",
text:"test",
likes:[
{
username:"User1"
},
{
username:"User2"
}
]
}
有了这个解决方案,我有一个内部数组。但是当我想查询这篇文章并且这篇文章有大量的喜欢时,它每次都会加载带有大数组的整个对象。我认为这需要很多性能。一个好处是我可以得到帖子并检查我是否喜欢这个帖子。
现在我有了这个解决方案:
{
_id="123456789",
text:"test"
}
这是没有赞的帖子。在另一个这样的集合中:
{
_id="111111111",
username:"User1",
postId:"123456789"
}
{
_id="222222222",
username:"User2",
postId:"123456789"
}
是喜欢。优点是您可以加载较小的对象,但每个类似的对象都需要大量磁盘空间。而且您无法通过一次查询获得我喜欢它的帖子和信息。因此,如果我想获得 20 个帖子,我不能只使用一个查询,我需要 21 个。
那么,最好的选择是什么?或者还有其他更好的解决方案吗?例如,Instagram 如何解决这个问题。你得到这个帖子,看看你是否喜欢它,它有超过 100 万个喜欢,等等。内部数组会很大。
感谢您的帮助!
【问题讨论】:
标签: mongodb database-design social-networking database