我有以下项目集合
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
}]
最佳答案
您可以使用 $max
尝试以下查询聚合运算符。
db.collection.aggregate([
{ "$project": {
"name": 1,
"startDate": { "$min": "$tasks.startDate" },
"endDate": { "$max": "$tasks.endDate" }
}}
])
[
{
"_id": ObjectId("5a934e000102030405000000"),
"endDate": ISODate("2018-09-29T10:02:49.403Z"),
"name": "p1",
"startDate": ISODate("2018-09-24T10:02:49.403Z")
}
]
关于arrays - 从 mongodb 数组中查找最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52481011/