Database
db={"documents":[{"_id":"a","client":1,"tag":"","debit":12,"credit":-20},{"_id":"b","client":1,"tag":"G","debit":-12,"credit":20},{"_id":"c","client":1,"tag":"G","debit":12,"credit":20},{"_id":"d","client":2,"tag":"","debit":13,"credit":0},{"_id":"e","client":2,"tag":"G","debit":-13,"credit":0},{"_id":"f","client":3,"tag":"","debit":13,"credit":0},{"_id":"g","client":3,"tag":"G","debit":14,"credit":0},{"_id":"h","client":4,"tag":"","debit":0,"credit":0}]}
Query
db.documents.aggregate([{"$match":{"tag":""}},{"$set":{"docStore":"$$ROOT"}},{"$lookup":{"from":"documents","localField":"client","foreignField":"client","let":{"credit":"$credit","debit":"$debit","tag":"$tag"},"pipeline":[{"$match":{"$expr":{"$and":[{"$eq":["$tag","G"]},{"$or":[{"$and":[{"$ne":["$$credit",0]},{"$eq":[{"$add":["$$credit","$credit"]},0]}]},{"$and":[{"$ne":["$$debit",0]},{"$eq":[{"$add":["$$debit","$debit"]},0]}]}]}]}}}],"as":"pairs"}},{"$match":{"$expr":{"$gt":[{"$size":"$pairs"},0]}}},{"$set":{"pair":["$docStore",{"$first":"$pairs"}]}},{"$project":{"_id":0,"pair":1}},{"$unwind":"$pair"},{"$replaceWith":{"$mergeObjects":["$pair",{"s":true}]}},{"$merge":"documents"}])