这是我们今天的课程,this is the dataset,这是列说明:
VARIABLE DESCRIPTIONS:
Column
1 Class (0 = crew, 1 = first, 2 = second, 3 = third)
10 Age (1 = adult, 0 = child)
19 Sex (1 = male, 0 = female)
28 Survived (1 = yes, 0 = no)
最后一个问题是
幸存的旅客百分比是多少? (使用嵌套的mongodb查询)
我知道是否要计算百分比,我使用.count
来找出Survive = 1的行数,以及总共使用.find(Survive:1).count()
的行数除以.find().count()
,目前我知道可以使用聚合来解决问题,但它不满足要求。有什么想法吗?
答案 0 :(得分:3)
考虑以下数据:
db.titanic.insert({ Survived: 1 })
db.titanic.insert({ Survived: 1 })
db.titanic.insert({ Survived: 1 })
db.titanic.insert({ Survived: 0 })
您可以将$group与$sum一起使用。通过1
作为参数传递时,您将获得总数,而$Survived
将统计存活者。然后,您可以使用$divide来获取百分比。
db.titanic.aggregate([
{
$group: {
_id: null,
Survived: { $sum: "$Survived" },
Total: { $sum: 1 }
}
},
{
$project: {
_id: 0,
SurvivedPercentage: { $divide: [ "$Survived", "$Total" ] }
}
}
])
其输出:{ "SurvivedPercentage" : 0.75 }