Database
[{}]
Query
db.collection.aggregate([{$project:{started:[{supplier:"1",publisher:"2",partner:"3",buyer:"4",started_at:"2022-01-01",starts:1},{supplier:"2",publisher:"2",partner:"3",buyer:"4",started_at:"2022-01-01",starts:1}],completed:[{supplier:"1",publisher:"2",partner:"3",buyer:"4",finished_at:"2025-01-01",completes:2,revenue:50},{supplier:"5",publisher:"2",partner:"6",buyer:"4",finished_at:"2025-01-01",completes:2,revenue:50}]}},{$project:{merged:{$reduce:{input:{$concatArrays:["$started","$completed"]},initialValue:{values:[],mapping:[]},in:{$cond:[{$in:[{$concat:["$$this.supplier","$$this.partner","$$this.buyer","$$this.publisher"]},"$$value.mapping.key"]},{values:{$map:{input:"$$value.values",as:"arrValue",in:{$cond:[{$and:[{$eq:["$$arrValue.supplier","$$this.supplier"]},{$eq:["$$arrValue.partner","$$this.partner"]},{$eq:["$$arrValue.buyer","$$this.buyer"]},{$eq:["$$arrValue.publisher","$$this.publisher"]},]},{$mergeObjects:["$$arrValue","$$this"]},"$$arrValue"]}}},mapping:"$$value.mapping"},{values:{$concatArrays:["$$value.values",["$$this"]]},mapping:{$concatArrays:["$$value.mapping",[{key:{$concat:["$$this.supplier","$$this.partner","$$this.buyer","$$this.publisher"]},value:{$size:"$$value.mapping"}}]]}}]}}}}},{$project:{mergedResults:"$merged.values"}}])