繁体   English   中英

mongodb-根据另一个集合中的值将列添加到一个集合中

[英]mongodb - add column to one collection find based on value in another collection

我有一个帖子集合,用于存储帖子相关信息和作者信息。 这是一棵嵌套的树。 然后,我有一个postrating集合,该集合存储哪个用户对特定帖子进行了上,下评级。

当请求获取特定帖子的嵌套树时,如果当前用户已投票,并且还需要对返回的每个帖子进行上下调整,我还需要返回。

在SQL中,这类似于“ posts。*,postrating.vote来自post,加入postID上的postrating和postrating.memberID = currentUser”。

我知道MongoDB不支持联接。 我对MongoDB有什么选择?

  1. 使用map reduce-一个简单查询的性能?
  2. 在过帐文件中存储评级-BSON大小限制?
  3. 获取所有必需帖子的列表。 获取当前用户的所有投票列表。 在帖子上循环播放,如果用户已投票将其添加到输出中?

还有其他办法吗? 可以使用聚合来完成吗?

注意:我上周开始使用MongoDB。

在MongoDB中,最简单的方法可能是使用应用程序侧逻辑处理此问题,而不是在单个查询中尝试。 有很多方法可以构造数据,但这是一种可能:

user_document = {
     name : "User1",
     postsIhaveLiked : [ "post1", "post2" ... ]
     }

post_document = {
     postID : "post1",
     content : "my awesome blog post"
     }

使用这种结构,您首先要查询用户的user_document。 然后,对于返回的每个帖子,您可以检查该帖子的postID是否在该用户的“ postsIhaveLiked”列表中。

这样做的主要思想是分两步而不是一步来获取数据。 这与postID不同,但是基于使用一个键(在本例中为postID )关联两个不同数据的相同基础思想。

通常,出于性能原因,请尝试避免使用map-reduce。 对于这个简单的用例,聚合不是您想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM