Database

[{order:1,state:"one"},{order:2,state:"one"},{order:3,state:"one"},{order:4,state:"two"},{order:5,state:"two"},{order:6,state:"one"},{order:7,state:"two"},{order:8,state:"three"},{order:9,state:"three"}]

Query

db.collection.aggregate([{"$setWindowFields":{"sortBy":{"order":1},"output":{"prevState":{$shift:{output:"$state",by:-1,default:null}}}}},{"$setWindowFields":{"sortBy":{"order":1},"output":{"grouping":{"$max":{"$cond":{"if":{$ne:["$state","$prevState"]},"then":"$order","else":-1}},"window":{"documents":["unbounded","current"]}}}}},{"$group":{_id:"$grouping",docs:{$push:{order:"$order",state:"$state"}}}}])

Result