一个名为test的、和集合

考虑此测试集合,其中机场由AirportID标识:

{ AirportID:"1001", delayMinutes :"15.0" },
{ AirportID:"1004", delayMinutes :"3.0" },
{ AirportID:"1001", delayMinutes :"20.0" },
{ AirportID:"1002", delayMinutes :"6.0" },
{ AirportID:"1002", delayMinutes :"25.0" },
{ AirportID:"1004", delayMinutes :"55.0" },

我想把它组合在一起,列出列表中的前2个.

这是我try 的查询:

db.test.aggregate([
  { $group: { _id: "$AirportID", delayMinutes: { $sum: 1 } } }, 
  { $sort: { delayMinutes: -1 } }
])

但这对我没用

推荐答案

你非常接近,你只需要做另外两件事:

  1. 在末尾添加$limit个阶段,只返回2个结果
  2. 使用$toDecimel$toDoubledelayMinutes转换为一个数字,请注意,任何无效的字符串值都会使此阶段失败.

总的来说,它是这样的:

db.test.aggregate([
  {
    $group: {
      _id: "$AirportID",
      delayMinutes: {
        $sum: {
          "$toDouble": "$delayMinutes"
        }
      }
    }
  },
  {
    $sort: {
      delayMinutes: -1
    }
  },
  {
    $limit: 2
  }
])

Mongo Playground

Mongodb相关问答推荐

使用mongosh将大型json文件插入到mongo集合中

Mongo如何找到字段排除特殊字符

无法在Ubuntu 22.04上安装MongoDB 7.0

如何在Mongo中查找数组中的特定对象

$lookup 的参数必须是字符串

从 kubectl exec 获取返回值到 powershell 脚本

将 MongoDB 转移到另一台服务器?

如何在 mongodb 中设置整数的默认值?

带有 mongodb 和 nodejs 的实时 Web 应用程序

MongoDB获取聚合查询的executionStats

用 BsonRepresentation(BsonType.ObjectId) vs BsonId vs ObjectId 在 C# 中装饰属性之间的区别

如何使用sailsjs v0.10连接mongodb?

MongoDB展开多个数组

无法从 javascript 打印 BSON 对象

将 MongoDB 数据库复制到本地计算机

MongoDB 在 mongoengine 中使用 OR 子句

无法将 Mongoose 连接到 Atlas

通过浏览器连接mongodb?

mongoose查询返回 null

如何使用 Spring 的 MongoTemplate 和 Query 类检索字段子集?