假设我们有posts
这样的表
id | friend_id | title |
- - | - - - - - - | - - - - |
1 | 2 | John |
2 | 5 | John |
3 | 4 | John |
4 | 4 | Joe |
5 | 5 | Amy |
6 | 2 | Amy |
7 | 2 | Joe |
我想要一个查询,它将按title
对行进行分组,并返回一行,其中包含一个friend_id数组。
结果可能是这样的:
{
John: { id: 1, title: John, friend_id: [2,5,4] }
Joe: { id: 4, title: Joe, friend_id: [4,2] }
Amy: { id: 5, title: Amy, friend_id: [5,2] }
}
我知道上面的例子不是真的!只是为了理解。
答案 0 :(得分:1)
此查询
db.posts.group(
key: {title: true}
, initial: {friend_ids : []}
, reduce: function(doc, out){ out.push(doc.friend_id) }
} );
将返回
之类的结果{
[{title : "John", friend_ids : [2,5,4]} , ....]
}
答案 1 :(得分:0)
您可以使用map reduce使用mongodb执行此操作pivoting
。 The MongoDB Cookbook中有一个很好的例子。请看一下。它不是那么难,你可以自己做。