【问题标题】:Mongo Query That Doesn't Display Duplicates From A Sort And Only Shows Certain FieldsMongo 查询不显示排序中的重复项,仅显示某些字段
【发布时间】:2017-03-27 16:16:24
【问题描述】:

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

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

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

【问题讨论】:

  • 我们有查询,但我们没有您查询的数据样本。请使用您尝试获取的示例文档和示例结果更新问题

标签: mongodb sorting mongodb-query aggregation-framework


【解决方案1】:

要仅获取唯一的 aricraft_id 和高度对,您可以按飞机 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})

【讨论】:

  • 当我运行该查询时,什么也没有发生,mongo 似乎期待编写更多代码。当我按下回车键时,它会移动到新行并打印“...”。如果我再按两次回车,它会恢复为等待新命令。
  • @sixshotsix 在 $group 阶段缺少一个花括号。顺便说一句,看到我在问题下的评论了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 2016-02-21
  • 1970-01-01
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
  • 2018-09-06
相关资源
最近更新 更多