Mongodb 不使用';不显示排序中的重复项,只显示某些字段

Mongodb 不使用';不显示排序中的重复项,只显示某些字段,mongodb,sorting,mongodb-query,aggregation-framework,Mongodb,Sorting,Mongodb Query,Aggregation Framework,我正在处理一个查询,该查询按照从最大到最小(海拔)的顺序对数据进行排序。我的结果必须只显示“飞机id”和“高度”。另外,当我的列表排序时,前几百个条目都是在稍有不同的时间记录的重复项。所以我需要排除包含相同高度和飞机id的副本。目前我有如下 db.planes.aggregate([{$match: {altitude: {$ne: ""}}}, {$sort: {altitude: -1}}], {allowedDiskUse: true}) 我不确定这些问题是否有意义,但非常感谢您的帮助

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

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

我不确定这些问题是否有意义,但非常感谢您的帮助

要仅获取唯一的aricraft\u id和高度对,您可以通过添加要设置的唯一高度(使用
$addToSet
操作)按飞机id对文档进行分组。在此之后,展开组以获得唯一的对

使用
$project
stage仅选择所需的字段:

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

我们有查询,但我们没有您正在查询的数据样本。请使用示例文档和示例结果更新问题,您正在尝试获取这些示例文档和示例结果。当我运行该查询时,什么都没有发生,mongo似乎希望编写更多的代码。当我按enter键时,它移动到一个新行并打印“…”。如果我再按两次enter键,它会返回到等待新命令的状态。@sixshotsix在$group stage中缺少一个花括号。顺便说一句,你看到我在这个问题下的评论了吗?