Database
db={"chats":[{"_id":1,"mssg":"abc","room":1,"creationDate":ISODate("2014-01-01T08:00:00Z")},{"_id":2,"mssg":"def","room":1,"creationDate":ISODate("2014-01-02T08:00:00Z")},{"_id":3,"mssg":"ghi","room":2,"creationDate":ISODate("2014-01-03T08:00:00Z")}],"rooms":[{"_id":1,"chatMssgs":[1,2],"roomName":"room 1","creationDate":ISODate("2014-01-01T08:00:00Z")},{"_id":2,"chatMssgs":[3],"roomName":"room 2","creationDate":ISODate("2014-01-01T08:00:00Z")}]}
Query
db.chats.aggregate([{"$match":{_id:{"$in":[1,2,3]}}},{"$group":{"_id":"$room","latestMsgDate":{"$max":"$creationDate"},"Msg":{$push:"$$ROOT"}}},{"$set":{"Msg":{"$filter":{"input":"$Msg","as":"m","cond":{"$eq":["$$m.creationDate","$latestMsgDate"]}}}}},{"$replaceRoot":{"newRoot":{"$first":"$Msg"}}},{"$sort":{creationDate:-1}}])