选择最大值并输出其ID。 MongoDB的

时间:2017-07-07 12:33:27

标签: mongodb

我有一组航班数据,正在构建一个管道来过滤特定的结果。到目前为止,我的管道看起来像这样。下面的问题

db.flights.aggregate([
{$project:{month:{$month:"$flight_date"},cancelled: "$cancelled"}}
,
{$group:{_id:"$month",total:{$sum:"$cancelled"},count:{$sum:1}}}
,
{$project:{_id:"$_id",ratio:{$divide: ["$total","$count"] } }}
,
{$sort:{ratio:-1}}
])

这给了我想要的输出:

{ "_id" : 2, "ratio" : 0.08839657282741738 }
{ "_id" : 1, "ratio" : 0.0695304467039872 }
{ "_id" : 3, "ratio" : 0.05533276450511945 }
{ "_id" : 6, "ratio" : 0.027439912192280983 }
{ "_id" : 7, "ratio" : 0.019906046890752697 }
{ "_id" : 5, "ratio" : 0.016912022432527166 }
{ "_id" : 4, "ratio" : 0.016336963769726605 }
{ "_id" : 8, "ratio" : 0.014001570269562941 }
{ "_id" : 12, "ratio" : 0.013169724213339814 }
{ "_id" : 11, "ratio" : 0.011361386138613861 }
{ "_id" : 9, "ratio" : 0.008534781659918047 }
{ "_id" : 10, "ratio" : 0.007929126168441613 }

问题:到目前为止一切顺利。现在如何添加一个仅返回最大比率的管道运算符?我已经对它进行了排序,但我更愿意返回一个文档,其中只包含最大比率的ID和最大比率(而不是文档集合)。

可以添加什么命令将上面的输出转换为下面的输出或类似的东西。到目前为止,我尝试使用max一直在计算一个数字的最大值:计算每个文档的最大值,而不是所有文档的最大值。 IE它确定水平最大而不是垂直。

{ "_id_max_ratio" : 2, "max_ratio" : 0.08839657282741738 }

0 个答案:

没有答案