2016-02-09 2 views
0

Например, я бегу агрегацию запрос в пределах списка, который имеет:Как сгруппировать данные в поле ключа?

[ 
    { "vector": { "age": 31, "location" : "SF" }}, 
    { "vector": { "age": 21, "location" : "NY" }} 
] 

и я хотел бы сгруппировать их и получить результат, как

{ 
    "age": [31, 21], 
    "location": ["SF", NY] 
} 

Пожалуйста, скажите мне, как получить такие как результат с операторами запросов.

+1

Если '' age' и location' быть в определенном порядке в массиве? – dikesh

+0

@ dikesh Нет, это не важно, мы можем сортировать их, если значения непрерывны, например. Численный. Я думаю о $ concat ... – Novitoll

ответ

0

Команда aggregate и group by NULL для перемещения всех элементов в соответствующий массив.

db.coll.aggregate([ 
    { 
     $group : { 
      _id : null, 
      age : {$push : "$vector.age"}, 
      location: {$push : "$vector.location"} 
     } 
    } 
]) 

После будет выводиться:

{ "_id" : null, "age" : [ 31, 21 ], "location" : [ "SF", "NY" ] } 
+0

Спасибо! Это должно быть правильным ответом, потому что он работает так, как я ожидаю :) – Novitoll

Смежные вопросы