У меня есть коллекция, которая содержит данные, такие как:Несколько групп в MongoDB агрегатного трубопровода
{
attribute: 'value',
date: ISODate("2016-09-20T18:51:05Z")
}
и я хочу группе attribute
, чтобы получить общее количество каждого атрибута и в то же время группе attribute
и $hour
к получить счет за атрибут и час.
Я знаю, что могу сделать что-то вроде:
{
$group: {
_id: '$attribute'
count: {
$sum: 1
}
}
}
и
{
$group: {
_id: {
attribute : '$attribute',
hour: {
'$hour' : '$date'
}
},
count: {
$sum: 1
}
}
},
{
$group: {
_id: {
attribute: '$_id.attribute'
},
hours: {
'$push': {
hour: '$_id.hour',
count: '$count'
}
}
}
}
получить оба результата в двух отдельных скоплений, но есть способ, чтобы получить результат, я хочу в одном запросе ?
Редактировать по запросу:
Возможно, это совершенно неправильно, но в идеале я хотел бы получить ответ, как:
{
_id: "attribute1",
total: 20, // Total number of attribute1 documents
// And the breakdown of those 20 documents per hour
hours: [{
hour: 10,
count: 8
},
{
hour: 14,
count: 12
}]
}
Однако вся суть вопроса в том, можно ли это сделать (и как) по одному запросу в mongodb. Не в двух запросах, которые будут объединены на прикладном уровне
Вопрос не ясен. Можете ли вы представить конкретный пример вывода, о котором вы думаете? –
@LeifEricson Я добавил пример ответа, надеюсь, теперь это ясно. Английский не мой родной язык, так что здесь может быть и языковой пробел, извините :) – mobius