我正在处理一个查询,按照从最大到最小(海拔高度)的顺序对我的数据进行排序。我的结果必须只显示" aircraft_id"和#34;海拔高度"。此外,当我的列表被排序时,前几百个条目都是在稍微不同的时间记录的所有重复项。所以我需要排除包含相同高度和aircraft_id的重复项。目前我有如下......
db.planes.aggregate([{$match:
{altitude: {$ne: ""}}},
{$sort: {altitude: -1}}],
{allowedDiskUse: true})
我不确定这些问题是否有意义,但我们非常感谢任何帮助。
答案 0 :(得分:0)
要获得唯一的aricraft_id和高度对,您可以使用aircraft_id对文档进行分组,并添加唯一的高度来设置(使用$addToSet
操作)。之后解开组以获得独特的对。
使用$project
阶段仅选择您想要的字段:
db.planes.aggregate([
{$match: {altitude: {$ne: ""}}},
{$group: {_id: "$aircraft_id", altitude: {$addToSet: "$altitude"}}},
{$unwind: "$altitude"},
{$project: {"aircraft_id": "$_id", "altitude": 1 }},
{$sort: {altitude: -1 }}
],
{allowedDiskUse: true})