MongoDB 查询返回三个不同组下的条目计数

  • 本文关键字:返回 查询 三个 MongoDB mongodb
  • 更新时间 :
  • 英文 :


我正在尝试创建一个mongoDB查询,该查询将返回三个不同组中的元素总数。该数据库是关于泰坦尼克号乘客的,其任务是返回未幸存的 18 岁以下总人数,按他们所属的等级分类。我想要的输出应该看起来像这样:

{"_id" : {"Class" : 3, "Survived" : "No", "Total" : 18}}
{"_id" : {"Class" : 2, "Survived" : "No", "Total" : 23}}
{"_id" : {"Class" : 1, "Survived" : "No", "Total" : 12}}

这是我到目前为止所拥有的:

db.passangers.aggregate([
{
"$match": {"Age": {$lt: 18},"Survived": "No"}
},
{
"$group": {
_id: {Class: "$Pclass", Survived: "$Survived"}}
},
{ $count: "Survived"},
{
"$sort": {"Pclass": -1}
}
])

但它似乎只输出:

{"Survived" : 17}

抱歉,如果我没有提供足够的信息,但我会不胜感激!

欢迎来到 SO。查询的问题在于,您在创建组时没有计算每个组中的元素数。因此,当您稍后计算它们时,它会返回 17,这是Pclass中不同值的数量。以下查询是否是您要查找的内容:

db.passangers.aggregate([   
{  
"$match": {"Age": {$lt: 18},"Survived": "No"} 
},
{    
"$group": { 
_id: {Class: "$Pclass", Survived: "$Survived"},  Total: {$sum:1}}
},
{ 
"$sort": {"Pclass": -1}
}
])

您将获得:

{ "_id" : { "Class" : 3, "Survived" : "No" }, "Total" : 18 }
{ "_id" : { "Class" : 2, "Survived" : "No" }, "Total" : 23 }
{ "_id" : { "Class" : 1, "Survived" : "No" }, "Total" : 12 }

最新更新