2011-11-22 73 views
0

例如联接如SQL Server,我们有两个集合使MongoDB中

users {userId, firstName, lastName}

votes {userId, voteDate}

我需要它有超过20票一天的所有用户的名称的报告。

如何编写查询以从MongoDB获取数据?

+0

可能的重复[如何在MongoDB中执行SQL Join等价物?](http://stackoverflow.com/questions/2350495/how-do-i-perform-the-sql-join-equivalent-in- MongoDB中) –

回答

0

我现在无法提供更全面的答案,但您应该可以使用MapReduce来实现此目的。 Map步骤将返回拥有超过20票的用户的userIds,reduce步骤将返回firstName和lastName,我认为......看一看here

2

最简单的方法是缓存用户文档中每个用户的投票数。然后你可以用一个查询来得到答案。

如果您不想这样做,则将结果减少到结果集合中,然后查询该集合。然后,您可以运行增量式地图缩小,只计算新的投票,以保持您的结果是最新的:http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-IncrementalMapreduce

2

您不应该真的试图与Mongo进行连接。如果你是以关系方式设计你的模式。

在这种情况下,我会将投票存储为用户的嵌入式文档。

在一些使用嵌入式文档的场景中是不可行的,在这种情况下,我会做两个数据库查询并在客户端连接结果,而不是使用MapReduce。