Aggregate: return document with no subdocument OR with latest subdocument only

This is a more complex version of the query in this question

I've got these Mongoose Schemas:

var Thread = new Schema({
    title: String, messages: [Message]
});
var Message = new Schema({
    date_added: Date, author: String, text: String
});

How do you return all Threads with their latest Message subdocument (limit 1) and all Threads without any Message subdocuments as well?