Я использую MongoDB 4.2, коллекция следующая:
{ "_id" : 1, "group_id": 1, "amount" : 10 }
{ "_id" : 2, "group_id": 1, "amount" : -5 }
{ "_id" : 3, "group_id": 1, "amount" : 8 }
{ "_id" : 4, "group_id": 2, "amount" : -1 }
{ "_id" : 5, "group_id": 2, "amount" : 7 }
{ "_id" : 6, "group_id": 2, "amount" : -2 }
{ "_id" : 7, "group_id": 3, "amount" : 10 }
{ "_id" : 8, "group_id": 3, "amount" : 15 }
Как мне создать промежуточную сумму документов?
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:
Примечание 1: Документы должны быть отфильтрованы с помощью _id с указанием диапазона, например between _id:2 and _id:7
.
Результат должен быть следующим:
{ "_id" : 2, "group_id": 1, "total_amount" : -5 }
{ "_id" : 3, "group_id": 1, "total_amount" : 3 } // (it was 8 but summing the previous -5 + 8 (current) = 3
{ "_id" : 4, "group_id": 2, "total_amount" : -1 }
{ "_id" : 5, "group_id": 2, "total_amount" : 6 } // (it was 7 but summing the previous -1 + 7 = 6
{ "_id" : 6, "group_id": 2, "total_amount" : 4 } // (it was -2 but summing the previous 6 - 2 = 4
{ "_id" : 7, "group_id": 3, "total_amount" : 10 }
Примечание 2: Промежуточная сумма должна соответствовать group_id
и сортироваться по _id
(сортировка важна для суммирования, конечно). Я должен только суммировать документы с одинаковыми group_id
(по заказу _id)