如何使用嵌套的mongoDB查询来计算百分比?

时间:2019-02-14 21:25:15

标签: mongodb

这是我们今天的课程,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() ,目前我知道可以使用聚合来解决问题,但它不满足要求。有什么想法吗?

1 个答案:

答案 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 }