【问题标题】:Find min and max value from the array in mongodb从MongoDB中的数组中查找最小值和最大值
【发布时间】:2019-02-28 01:32:44
【问题描述】:

我有关注项目集合

Project Collection :

[
{
    Id : 1,
    name : p1,
    tasks : [{
        taskId : t1,
        startDate : ISODate("2018-09-24T10:02:49.403Z"),
        endDate : ISODate("2018-09-26T10:02:49.403Z"),
    },
    {
        taskId : t2,
        startDate : ISODate("2018-09-24T10:02:49.403Z"),
        endDate : ISODate("2018-09-29T10:02:49.403Z"),
    },
    {
        taskId : t3,
        startDate : ISODate("2018-09-24T10:02:49.403Z"),
        endDate : ISODate("2018-09-27T10:02:49.403Z"),
    }]
}
]

如何根据任务执行获取p1项目的startDate和EndDate 即任务数组中的最小开始日期和最大结束日期

示例。 P1项目包含3个不同日期的不同任务 我只想获得项目的最终开始日期和结束日期 p1

Output should be
result : [{
  Id : 1,
  name : p1,
  startDate : ISODate("2018-09-24T10:02:49.403Z"), //min date 
  endDate : ISODate("2018-09-29T10:02:49.403Z") //max date
}]

【问题讨论】:

    标签: arrays mongodb mongodb-query aggregation-framework aggregate


    【解决方案1】:

    您可以尝试使用$max 聚合运算符进行以下查询。

    db.collection.aggregate([
      { "$project": {
        "name": 1,
        "startDate": { "$min": "$tasks.startDate" },
        "endDate": { "$max": "$tasks.endDate" }
      }}
    ])
    

    Output

    [
      {
        "_id": ObjectId("5a934e000102030405000000"),
        "endDate": ISODate("2018-09-29T10:02:49.403Z"),
        "name": "p1",
        "startDate": ISODate("2018-09-24T10:02:49.403Z")
      }
    ]
    

    【讨论】:

      猜你喜欢
      • 2018-05-03
      • 2021-09-15
      • 2016-08-12
      • 2017-08-18
      • 2013-11-12
      • 2016-06-06
      • 2018-08-01
      • 2019-03-31
      相关资源
      最近更新 更多