【发布时间】:2020-07-01 06:46:32
【问题描述】:
用例:我在集合中有多个带有嵌套文档数组(PODDetails)的文档,需要一个结果分组(WTID 字段)并将一个数组(PODDetails)合并为单个文档(除了 PODDetails 其他详细信息相同)。
以下是集合中的文档:
{
"_id": "180910eb-4670-4ccb-ac89-0e993b050105",
"WTID": "WT1389",
"TDLNumber": "002",
"POD": "SW 35-44-07-W5",
"PODDetails": [
{
"LoadStartDate": "2019-10-18",
"LoadStartTime": "17:37:54",
"LoadStopDate": "2019-10-18",
"LoadStopTime": "17:37:54",
"Volume": 15,
"VolUnit": "m3"
}
],
"Status": "Active",
"createdon": {
"$date": "2020-03-20T17:37:54.000Z"
}
},
{
"_id": "5a4d3ee0-83e3-40df-a3a3-28f8c7560106",
"WTID": "WT1389",
"TDLNumber": "002",
"POD": "SW 35-44-07-W5",
"PODDetails": [
{
"LoadStartDate": "2019-10-18",
"LoadStartTime": "17:38:33",
"LoadStopDate": "2019-10-18",
"LoadStopTime": "17:38:33",
"Volume": 25,
"VolUnit": "m3"
}
],
"Status": "Active",
"createdon": {
"$date": "2020-03-20T18:55:15.000Z"
}
},
{
"_id": "180910eb-4670-4ccb-ac89-0e993b050107",
"WTID": "WT1390",
"TDLNumber": "002",
"POD": "SW 35-44-07-W5",
"PODDetails": [
{
"LoadStartDate": "2019-10-18",
"LoadStartTime": "17:37:54",
"LoadStopDate": "2019-10-18",
"LoadStopTime": "17:37:54",
"Volume": 15,
"VolUnit": "m3"
}
],
"Status": "Active",
"createdon": {
"$date": "2020-03-20T17:37:54.000Z"
}
}
结果应如下所示,基于“WTID”字段
{
"_id": "180910eb-4670-4ccb-ac89-0e993b050105",
"WTID": "WT1389",
"TDLNumber": "002",
"POD": "SW 35-44-07-W5",
"PODDetails": [
{
"LoadStartDate": "2019-10-18",
"LoadStartTime": "17:37:54",
"LoadStopDate": "2019-10-18",
"LoadStopTime": "17:37:54",
"Volume": 15,
"VolUnit": "m3"
},
{
"LoadStartDate": "2019-10-18",
"LoadStartTime": "17:38:33",
"LoadStopDate": "2019-10-18",
"LoadStopTime": "17:38:33",
"Volume": 25,
"VolUnit": "m3"
}
],
"createdon": {
"$date": "2020-03-20T17:37:54.000Z"
}
},
{
"_id": "180910eb-4670-4ccb-ac89-0e993b050107",
"WTID": "WT1390",
"TDLNumber": "002",
"POD": "SW 35-44-07-W5",
"PODDetails": [
{
"LoadStartDate": "2019-10-18",
"LoadStartTime": "17:37:54",
"LoadStopDate": "2019-10-18",
"LoadStopTime": "17:37:54",
"Volume": 15,
"VolUnit": "m3"
}
],
"createdon": {
"$date": "2020-03-20T17:37:54.000Z"
}
}
以下是我尝试过的'...我只需要获取当前日期(即今天)的文档
{
aggregate([{
"$addFields": {
"CreatedOnDate": {
"$dateToString": {
"format": "%Y-%m-%d",
"date": {
"$add": ["$createdon", 18000000]
}
}
}
}
}, {
"$match": {
"CreatedOnDate": {
"$gte": "2020-03-20",
"$lte": "2020-03-20"
},
"Status": {
"$eq": "Active"
}
}
}, {
"$unwind": "$PODDetails"
}, {
"$group": {
"WaterTrackingID": "$WaterTrackingID",
"POD": {
"$addToSet": "$PODDetails"
},
"data": {
"$first": "$$ROOT"
}
}
}, {
"$project": {
"TDLNumber": "$data.TDLNumber",
"PointOfDiversion": "$data.PointOfDiversion",
"POD": 1,
"CreatedOnDate": "$data.CreatedOnDate"
}
}])
}
但是,此查询不起作用...
这里出了什么问题。任何帮助将不胜感激!
【问题讨论】:
标签: mongodb aggregation-framework