Database

[{"charges":226.09000000000003,"currentBalance":226.09000000000003,"insPortion":"","currentInsPortion":"","claim":"notSent","status":"unpaid","procedures":{"providerId":"9vfpjSraHzQFNTtN7","procedure":"21111","description":"One surface","category":"basicRestoration","surface":["m"],"providerName":"B Dentist","proceduresIndex":"0"},"patientId":"mE5vKveFArqFHhKmE","patientName":"Silvia Waterman","invoiceIndex":"0","proceduresIndex":"0"},{"charges":226.09000000000003,"currentBalance":226.09000000000003,"insPortion":"","currentInsPortion":"","claim":"notSent","status":"unpaid","procedures":{"providerId":"9vfpjSraHzQFNTtN7","procedure":"21112","fee":128.8,"description":"Two surfaces","category":"basicRestoration","surface":["m","d"],"providerName":"B Dentist","proceduresIndex":"1"},"patientId":"mE5vKveFArqFHhKmE","patientName":"Silvia Waterman","invoiceIndex":"0",},{"insPortion":"","currentInsPortion":"","claim":"notSent","status":"unpaid","procedures":{"providerId":"9vfpjSraHzQFNTtN7","serviceDate":"2019-08-01","phase":"1","status":"completed","procedure":"21111","description":"One surface","fee":"97.29","surface":["five"],"lab1":{"code":""},"lab2":{"code":""},"providerName":"B Dentist","proceduresIndex":"0"},"patientId":"mE5vKveFArqFHhKmE","patientName":"Silvia Waterman","invoiceIndex":"1",},{"insPortion":"","currentInsPortion":"","claim":"notSent","status":"unpaid","procedures":{"providerId":"9vfpjSraHzQFNTtN7","serviceDate":"2019-08-01","phase":"1","status":"completed","procedure":"21111","description":"One surface","fee":"97.29","surface":["five"],"lab1":{"code":""},"lab2":{"code":""},"providerName":"B Dentist","proceduresIndex":"1"},"patientId":"mE5vKveFArqFHhKmE","patientName":"Silvia Waterman","invoiceIndex":"1",},{"insPortion":"","currentInsPortion":"","claim":"notSent","status":"unpaid","procedures":{"providerId":"9vfpjSraHzQFNTtN7","serviceDate":"2019-08-01","phase":"1","status":"completed","procedure":"21111","description":"One surface","fee":"97.29","surface":["five"],"lab1":{"code":""},"lab2":{"code":""},"providerName":"B Dentist","proceduresIndex":"2"},"patientId":"mE5vKveFArqFHhKmE","patientName":"Silvia Waterman","invoiceIndex":"1",}]

Query

db.collection.aggregate([{$group:{_id:"$invoiceIndex",procedures:{$push:"$procedures"},invoice:{$first:"$$ROOT"}}},{$addFields:{"invoice.procedures":"$procedures"}},{"$replaceRoot":{"newRoot":"$invoice"}}])

Result