Prueba esto:
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 maneja un objeto agregado al cursor de manera diferente a Mongodb-native como lo publicó en su enlace. Más información aquí:documentación del cursor agregado de mongoose