[英]Add new field To collection in MongoDB but the value based on value in another field
[英]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有什么选择?
还有其他办法吗? 可以使用聚合来完成吗?
注意:我上周开始使用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.