Database
[{Weeks:[{Week:1,Status:1,InsertDate:"2019-12-27T08:44:26.000Z",TargetClient:1,MaxClaims:1},{Week:1,Status:1,InsertDate:"2019-12-27T08:44:26.000Z",TargetClient:2,MaxClaims:2},{Week:1,Status:1,InsertDate:"2019-12-27T08:44:26.000Z",TargetClient:3,MaxClaims:2},{Week:2,Status:1,InsertDate:"2019-12-27T08:44:26.000Z",TargetClient:2,MaxClaims:5},{Week:3,Status:1,InsertDate:"2019-12-27T08:44:26.000Z",TargetClient:3,MaxClaims:5},{Week:4,Status:1,InsertDate:"2019-12-27T08:44:26.000Z",TargetClient:4,MaxClaims:5},{Week:5,Status:1,InsertDate:"2019-12-27T08:44:26.000Z",TargetClient:5,MaxClaims:5},{Week:6,Status:1,InsertDate:"2019-12-27T08:44:26.000Z",TargetClient:6,MaxClaims:5},{Week:7,Status:1,InsertDate:"2019-12-27T08:44:26.000Z",TargetClient:7,MaxClaims:5},{Week:8,Status:1,InsertDate:"2019-12-27T08:44:26.000Z",TargetClient:8,MaxClaims:5}]}]
Query
db.collection.aggregate([{$project:{Weeks:{$reduce:{input:{$setUnion:"$Weeks.Week"},initialValue:[],in:{$concatArrays:["$$value",[{WeekNum:"$$this",Docs:{$filter:{input:"$Weeks",as:"w",cond:{$eq:["$$w.Week","$$this"]}}}}]]}}}}}])