Вариант использования: у меня есть несколько документов с массивом вложенных документов (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"
}
}])
}
Однако этот запрос не работает ...
Что здесь не так? , Любая помощь будет оценена !!