首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在未找到的MongoDb中获得每个日期的最高值?

如何在未找到的MongoDb中获得每个日期的最高值?
EN

Stack Overflow用户
提问于 2021-08-30 10:11:07
回答 2查看 52关注 0票数 0

在这种情况下,我遇到的问题是对每个注册日的所有值的列表进行区分。示例:

{汽车:“沃尔沃”,公里:“101”,dateInsert::ISODate("2019-10-22T14:43:32.924+01:00")}

{汽车:“沃尔沃”,公里:“105”,dateInsert::ISODate("2019-10-22T14:50:32.924+01:00")},

{汽车:“沃尔沃”,公里:“115”,dateInsert::ISODate(“2019-10-23T19:43:32.924+01:00”)

{汽车:“沃尔沃”,公里:“119”,dateInsert::ISODate("2019-10-23T20:30:32.924+01:00")},

{汽车:“宝马”,公里:“40”,dateInsert::ISODate(“2019-10-10T14:43:32.924+01:00”)

{汽车:“宝马”,公里:“43”,dateInsert::ISODate(“2019-10-10T14:50:32.924+01:00”)

{汽车:“宝马”,公里:“50”,dateInsert::ISODate("2019-10-10T19:43:32.924+01:00")},

{汽车:“宝马”,公里:“59”,dateInsert::ISODate("2019-10-11T20:30:32.924+01:00")}, .

在这种情况下,只有粗体显示,我需要的最后记录的每一天。

获得这些唱片的好方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-30 12:10:10

这里的测试代码

MongoDB也可以比较文档,通过逐个比较字段,如果它们有相同的名称,那么在km第一个字段中,我们将首先得到max km$$ROOT是一个系统变量,具有所有文档的值。

代码语言:javascript
复制
db.collection.aggregate([
  {
    "$group": {
      "_id": {
        "year": {
          "$year": "$dateInsert"
        },
        "day": {
          "$dayOfYear": "$dateInsert"
        }
      },
      "max": {
        "$max": {
          "km": "$km",
          "doc": "$$ROOT"
        }
      }
    }
  },
  {
    "$replaceRoot": {
      "newRoot": "$max.doc"
    }
  }
])
票数 2
EN

Stack Overflow用户

发布于 2021-08-30 10:45:51

  • $substr$dateToString只从ISODate中提取日期。
  • $group$addToSet按唯一日期对所有文档进行分组。
  • $reduce查找每个日期的km字段最大值的文档。
  • 用适当的字段投影结果的$project
代码语言:javascript
复制
db.collection.aggregate([
  {
    "$set": {
      "dateInsert": {
        $substr: [
          {
            $dateToString: {
              date: "$dateInsert"
            }
          },
          0,
          10
        ]
      }
    }
  },
  {
    "$group": {
      "_id": "$dateInsert",
      "results": {
        $addToSet: {
          car: "$car",
          km: "$km"
        }
      }
    }
  },
  {
    "$set": {
      "results": {
        $reduce: {
          input: "$results",
          initialValue: {
            km: 0
          },
          in: {
            $cond: [
              {
                $gte: [
                  "$$this.km",
                  "$$value.km"
                ]
              },
              "$$this",
              "$$value"
            ]
          }
        }
      }
    }
  },
  {
    "$project": {
      dateInsert: "$_id",
      car: "$results.car",
      km: "$results.km",
      _id: 0
    }
  }
])

下面是工作示例:F

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68982357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档