我试图编写一个查询,该查询包含进入$ min和$ max的多个变量,以查找每个变量的最小和最大变量。
我需要的查询是: 对于每个航空公司,找到造成最小延误的延误类别,并找到该类别中该航空公司延误最多的机场。
我尝试编写以下内容,但不起作用:
{
$group: {
_id: "carrier",
"min": {
$min: {
"arr_del15",
"carrier_ct",
"weather_ct",
"nas_ct",
"security_ct",
"late_airport_ct"
}
}
}
])
请问我应该如何使用多个变量?
非常感谢。
答案 0 :(得分:0)
仅举一个例子,我们在mongo数据库中插入了以下数据:
db.data.insertMany([
{carrier: "AAA", a: 1, b: 2, c: 3, d: 4},
{carrier: "AAA", a: 2, b: 3, c: 4, d: 5},
{carrier: "BBB", a: 3, b: 4, c: 5, d: 6},
{carrier: "BBB", a: 1, b: 2, c: 3, d: 4},
{carrier: "CCC", a: 2, b: 3, c: 4, d: 5},
{carrier: "CCC", a: 3, b: 4, c: 5, d: 6}
]);
然后我们可以从一个项目开始编写一个简单的聚集查询,该项目将获取该文档的当前最小和最大值,然后将其与groupby链接起来以获取所有载体的最小和最大值:>
db.data.aggregate([
{ $project: {
"carrier": 1,
min: { $min: [
"$a",
"$b",
"$c",
"$d"
]
},
max: { $max: [
"$a",
"$b",
"$c",
"$d"
]
}
}
},
{ $group: {
_id : "$carrier",
min: { $min: "$min" },
max: { $max: "$max" }
}
}
]);
这将输出我们预期的结果:
{ "_id" : "CCC", "min" : 2, "max" : 6 }
{ "_id" : "BBB", "min" : 1, "max" : 6 }
{ "_id" : "AAA", "min" : 1, "max" : 5 }