我正在试着从我的收藏中获取avgBMI,maxBMI和maxBMI。
var bmi = db.people.aggregate(
[
{
$group:
{
_id: 1,
avgBmi: {$avg: {$divide: [{$toDouble:"$weight"},{$pow: [{$divide:[{$toDouble:"$height"},100]},2]}]}},
minBmi: {$min: {$divide: [{$toDouble:"$weight"},{$pow: [{$divide:[{$toDouble:"$height"},100]},2]}]}},
maxBmi: {$max: {$divide: [{$toDouble:"$weight"},{$pow: [{$divide:[{$toDouble:"$height"},100]},2]}]}}
}
}
]
);这是有效的,但它是令人讨厌的.
https://mongoplayground.net/p/LxJU8KmRzq2
如何替换计算过程才能停止计算3次?
发布于 2020-05-04 05:23:28
使用$project stage将操作分配给单个字段,然后在$group stage中使用该字段。
db.people.aggregate([
{ "$project": {
"cal": {
"$divide": [
{ "$toDouble": "$weight" },
{ "$pow": [{ "$divide": [{ "$toDouble": "$height" }, 100] }, 2] }
]
}
}},
{ "$group": {
"_id": 1,
"avgBmi": { "$avg": "$cal" },
"minBmi": { "$min": "$cal" },
"maxBmi": { "$max": "$cal" }
}}
])https://stackoverflow.com/questions/61581459
复制相似问题