Мой первый запрос возвращает следующий результат после различных этапов конвейера агрегации:
{
"group" : "A",
"count" : 6,
"total" : 20
},
{
"group" : "B",
"count" : 2,
"total" : 50
}
Мой второй запрос возвращает следующий результат после различных этапов конвейера агрегации:
{
"group": "A",
"count": 4,
"total": 80
},
{
"group": "C",
"count": 12,
"total": 60
}
Оба запроса выполняются для одной и той же коллекции, но группирует и преобразует данные по-разному в зависимости от этапов конвейера.
Оба моих запроса используют разные условия $match
, имеют разные этапы конвейера, включая $facet,$unwind,$group,$project
и такие операторы, как $map,$reduce,$zip,$subtract
...
db.collection.aggregate([
{ $unwind...},
{ $match....},
{ $facet...},
...
])
Когда я использую $facet
для выполнения моих запросов как параллельных запросов, возникает следующая ошибка (потому что я ' m уже использует $facet
в моих существующих запросах):
$facet is not allowed to be used within a $facet stage
Ожидаемый результат:
Мне нужно найти среднее значение для каждой группы.
Для этого мне нужно объединить результаты обоих запросов и выполнить запросы по объединенному результату.
Мой объединенный этап должен выглядеть так:
{
"group" : "A",
"count" : 10,
"total" : 100
},
{
"group" : "B",
"count" : 2,
"total" : 50
},
{
"group": "C",
"count": 12,
"total": 60
}
Ожидается окончательный результат со средним значением для каждой группы:
{
"group" : "A",
"avg" : 10
},
{
"group" : "B",
"avg" : 25
},
{
"group": "C",
"avg": 5
}
Существуют ли какие-либо операторы в конвейере агрегации MongoDB для достижения этого без изменения моих существующих запросов?
Как достичь этого варианта использования?
Спасибо!