Mongo查询不显示排序中的重复项,仅显示某些字段

时间:2017-03-27 16:16:25

标签: mongodb sorting mongodb-query aggregation-framework

我正在处理一个查询,按照从最大到最小(海拔高度)的顺序对我的数据进行排序。我的结果必须只显示" aircraft_id"和#34;海拔高度"。此外,当我的列表被排序时,前几百个条目都是在稍微不同的时间记录的所有重复项。所以我需要排除包含相同高度和aircraft_id的重复项。目前我有如下......

db.planes.aggregate([{$match: 
{altitude: {$ne: ""}}},
{$sort: {altitude: -1}}],
{allowedDiskUse: true})

我不确定这些问题是否有意义,但我们非常感谢任何帮助。

1 个答案:

答案 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})