Добрый день, у меня возникли проблемы с использованием агрегации в mongodb для получения разницы в датах между двумя значениями в массиве, структура моего документа выглядит следующим образом:
{
"_id" : ObjectId("5c591420a890362dec70fcf4"),
"tracetag" : "T00005",
"amounts" : [
{
"_id" : ObjectId("5c5915bea890362dec71015a"),
"startdate" : ISODate("2019-02-15T04:49:02.000+0000"),
"enddate" : ISODate("2019-02-15T04:50:05.000+0000"),
"amount" : 18.975946800811833,
},
{
"_id" : ObjectId("5c5915bea890362dec71015b"),
"startdate" : ISODate("2019-02-16T04:49:02.000+0000"),
"enddate" : ISODate("2019-02-16T04:51:52.000+0000"),
"amount" : 3.5755730555836203,
},
{
"_id" : ObjectId("5c5915bea890362dec71015c"),
"startdate" : ISODate("2019-02-17T04:49:02.000+0000"),
"enddate" : ISODate("2019-02-17T04:50:04.000+0000"),
"amount" : 2.3937573313380383,
}
],
}
количество записей «сумма»не фиксированный, так что это может быть 1 или 50 и т. д.
для каждого документа, я хотел бы получить разницу между «конечной датой» и «начальной датой» (или продолжительностью), и я хотел бы суммироватьПродолжительность (давайте назовем это общее время).Я могу сделать общую сумму без проблем, но получение длительности дает мне ошибку "" не могу вычесть массив из массива ", моя агрегация выглядит так:
{
"$project" : {
"tracetag" : 1.0,
"totalamount" : {
"$sum" : "$amounts.amount"
},
"totalduration" : {
"$sum" : {
"$subtract" : [
"$amounts.enddate",
"$amounts.startdate"
]
}
}
}
},