Учитывая следующие данные, я пытаюсь получить среднее значение всех их возрастов, в то же время я хочу вернуть массив их имен. В идеале я хочу сделать это всего за один запрос, но, похоже, не могу понять это.
Данные:
users:[
{user:{
id: 1,
name: “Bob”,
age: 23
}},
{user:{
id: 1,
name: “Susan”,
age: 32
}},
{user:{
id: 2,
name: “Jeff”,
age: 45
}
}]
Запрос:
var dbmatch = db.users.aggregate([
{$match: {"id" : 1}},
{$group: {_id: null, avg_age: { $avg: "$age" }}},
{$group: {_id : { name: "$name"}}}
)]
Запуск вышеуказанных групп по одной выводит ожидаемые результаты: либо _id с нулевым значением, в среднем 27,5, либо массив имен.
Когда я комбинирую их, как вы видите выше, используя запятую, я получаю:
Код сгенерированного выпуска:
[ { _id: {name: null } } ]
Ожидаемый сгенерированный код:
[
{name:"Bob"},
{name:"Susan"},
avg_age: 27.5
]
Любая помощь будет принята с благодарностью!