Я запускаю некоторые агрегирующие запросы в MongoDB 3.2. Я хотел бы сгруппировать документы по полю со средним значением в другом числовом поле. Мне нужно среднее значение, чтобы игнорировать значения 0. Проблема в том, что я не могу полностью фильтровать документ, потому что для подсчета требуется другое поле.
Проиллюстрируем:
Это структура моих документов:
{"stringToGroupByOn":"foo", "valueToAvg":42, "valueToSum":21}
{"stringToGroupByOn":"foo", "valueToAvg":0, "valueToSum":13}
Я не могу просто фильтровать, как это:
db.foobar.aggregate([
{
$match : { valueToAvg : { $gt : 0 } }
},
{
$group : {
_id : '$stringToGroupByOn',
avg : { $avg : '$valueToAvg' },
count : { $sum : '$valueToSum' }
}
}
])
Потому что я теряю значение 13 для сосчитать.
Как вы думаете, есть ли способ сделать это только в одном запросе?
, что Монго версию мы имеем? – profesor79
Извините, что забыл упомянуть об этом: версия 3.2 – eli0tt