Prova questo:
var cursor = User.aggregate([
{ $match: { _id: { $nin: req.decoded.username.connections } } },
{ $sample: { size: 10 } },
]).cursor().exec();
cursor.each(function(err, doc) {
//do something with doc
});
Mongoose gestisce un aggregato all'oggetto cursore in modo diverso rispetto a Mongodb-native come hai pubblicato nel tuo link. Maggiori informazioni qui:documentazione del cursore aggregato mongoose