我有一个特定的用例,我正在尝试找到一种方法在一个聚合管道中完成它,并且最好不需要对任何数据值进行硬编码。我想根据一个属性对文档进行分组,并查看文档中特定字段的值计数。
示例数据:
{
"flightNum": "DL1002",
"status": "On time",
"date": 20191001
},
{
"flightNum": "DL1002",
"status": "Delayed",
"date": 20191002
},
{
"flightNum": "DL1002",
"status": "On time",
"date": 20191003
},
{
"flightNum": "DL1002",
"status": "Cancelled",
"date": 20191004
},
{
"flightNum": "DL952",
"status": "On time",
"date": 20191003
},
{
"flightNum": "DL952",
"status": "On time",
"date": 20191004
}
我想要一个聚合管道,它可以告诉我每个航班(按 FlightNum 分组)有多少个航班“准时”、“延误”或“取消”。
期望的响应:
{
"flightNum": "DL1002",
"numOnTime": 2,
"numCancelled": 1,
"numDelayed": 1
},
{
"flightNum": "DL952",
"numOnTime": 2
}
字段的命名并不重要,只要它们位于一个文档中即可。我发现我可以用$cond运算符,但这需要我对“状态”字段的预期值进行硬编码。对于这个任意示例,没有很多值,但如果添加另一个状态,我希望不必更新查询。由于 Mongo 有很多漂亮的技巧,我觉得可能有一种方法可以实现这一点。