2015-08-21 44 views
0

考虑以下集合:如何实现的SQL加盟等效MongoDB的[ReactiveMongo]

// Users 
{ "_id": ObjectId("1"), "username": "user1", "role": "developer" } 
{ "_id": ObjectId("2"), "username": "user2", "role": "projectManager" } 
{ "_id": ObjectId("3"), "username": "user3", "role": "testManager" } 
{ "_id": ObjectId("4"), "username": "user4", "role": "developer" } 

// Projects 
{ "_id": ObjectId("1"), "title": "Monitoring System", ... } 
{ "_id": ObjectId("2"), "title": "Search Engine", ... } 
{ "_id": ObjectId("3"), "title": "IDE for Scala", ... } 

// Contributions 
{ "_id": ObjectId("1"), "projectId": ObjectId("1"), "userId": ObjectId("1") } 
{ "_id": ObjectId("2"), "projectId": ObjectId("1"), "userId": ObjectId("2") } 
{ "_id": ObjectId("3"), "projectId": ObjectId("1"), "userId": ObjectId("3") } 
{ "_id": ObjectId("4"), "projectId": ObjectId("2"), "userId": ObjectId("1") } 

使用ReactiveMongo,我怎么得到所有谁贡献的用户项目1个?我需要整个文档...不仅仅是用户ID。

+0

我看到了这个答案......但这不是我要找的。我认为有更好的方法,如聚合框架,但我无法找到一个符合我的需求的例子。 – j3d

+0

这是因为它不存在。 :) MongoDB查询只能跨越一个集合。 – JohnnyHK

回答

0

有MongoDB中没有加入这种情况下我想使嵌入您的数据,并使用真实的链接,例如:

//用户

{_id : id, username: name, role: role, Contributions : [projectId1, projectId2, ..] } 

这样,你可以做一个简单的查找来获取所有用户文档在贡献数组中具有特定项目标识。

将丰富的数据嵌入到集合中使Mongodb具有如此高性能和灵活性。

+0

不......这不起作用,因为在我的真实情况下,一个项目可能有成千上万的贡献者...... – j3d