Как сгруппировать в MongoDB с этим делом - PullRequest
0 голосов
/ 20 декабря 2011

Допустим, у нас есть 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] }
}

Я знаю, что приведенный выше пример ненастоящий!Просто чтобы иметь смысл.

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Этот запрос

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]} , ....]
}
0 голосов
/ 20 декабря 2011

Вы можете сделать это pivoting с помощью mongodb с помощью карты уменьшить.Хороший пример есть в The MongoDB Cookbook .пожалуйста, взгляните.Это не так сложно, вы можете сделать это сами.

...