Database
[{"story":"","seenByUser":["a","b","c","d"],"medicationStage":"no-medication"},{"story":"","seenByUser":["a","d"],"medicationStage":"no-medication"},{"story":"","seenByUser":["d"],"medicationStage":"just-after-medication"},{"story":"","seenByUser":["a"],"medicationStage":"towards-end-of-medication"},]
Query
db.collection.aggregate({"$match":{"seenByUser":{"$ne":"b"}}},{"$group":{"_id":"$medicationStage","seenByUser":{"$push":"$seenByUser"}}},{"$project":{"_id":0,"medicationStage":"$_id","seenByUser":{"$reduce":{"input":"$seenByUser","initialValue":[],"in":{"$concatArrays":["$$value","$$this"]}}}}})