Я пытаюсь посчитать средний ИМТ для каждой национальности в моей базе данных. Я должен был бросить вес и рост в двойном размере, потому что $ avg возвращал ноль
db.people.aggregate
(
{
$group:
{
_id:"$nationality",
avgBMi:
{
$avg:
{
$divide:
[
{$toDouble:"$weight",$pow:[{$toDouble:"$height"},2]}
]
}
}
}
}
)
но я получаю ошибки, и я не знаю, как их исправить
"errmsg" : "An object representing an expression must have exactly one
field: { $toDouble: \"$weight\", $pow: [ { $toDouble: \"$height\" }, 2.0 ] }"
тогда я прочитал о матче и группе, поэтому я сделал
db.people.aggregate
(
{$group:
{
_id:"$nationality"
}},
{
$match:{
avgBMi:
{
$avg:
{
$divide:
[
{$toDouble:"$weight",$pow:[{$toDouble:"$height"},2]}
]
}
}
}
}
)
и я получаю
"errmsg" : "unknown operator: $avg"
вот образец моей коллекции
{
"_id": {
"$oid": "5be18d5cedc30c3a396e3651"
},
"sex": "Female",
"first_name": "Frances",
"last_name": "Romero",
"job": "Project Manager",
"email": "fromeroc@ted.com",
"location": {
"city": "Yantang",
"address": {
"streetname": "Holy Cross",
"streetnumber": "33801"
}
},
"description": "non velit nec nisi vulputate nonummy maecenas tincidunt
lacus at velit",
"height": "179.89",
"weight": "67.8",
"birth_date": "1954-03-25T11:51:38Z",
"nationality": "China"
}
Не могли бы вы, ребята, помочь мне?