我有一个帖子集合,用于存储帖子相关信息和作者信息。这是一个嵌套的树。 然后我有一个postrating集合,用于存储哪个用户对特定帖子进行了上调或下调。
当请求获取特定帖子的嵌套树时,如果当前用户已经投票,我还需要返回,如果是,则返回每个帖子的上或下。
在SQL中,这将是“posts。*,postrating.vote from posts posts join postrating on postID and postrating.memberID = currentUser”。
我知道MongoDB不支持连接。 MongoDB有哪些选择?
还有其他方法吗?可以使用聚合来完成吗?
注意:我上周开始使用MongoDB。
答案 0 :(得分:0)
在MongoDB中,最简单的方法可能是使用应用程序端逻辑来处理它,而不是在单个查询中尝试这一点。有很多方法可以构建您的数据,但这有一种可能性:
user_document = {
name : "User1",
postsIhaveLiked : [ "post1", "post2" ... ]
}
post_document = {
postID : "post1",
content : "my awesome blog post"
}
使用此结构,您将首先查询用户的user_document。然后,对于返回的每个帖子,您可以检查帖子的postID
是否在该用户的“postsIhaveLiked”列表中。
这样做的主要思想是,您可以分两步获取数据,而不是一步。这与连接不同,但基于使用一个键(在本例中为postID
)来关联两个不同数据的相同基本思想。
通常,出于性能原因,请尽量避免使用map-reduce。对于这个简单的用例,聚合不是你想要的。