Nodo - Mongoose 3.6 - Ordenar consulta con campo rellenado

Estoy tratando de hacer una consulta utilizada por una cuadrícula remota, por lo que tendré que manejar la clasificación (asc, desc) en todos los campos.

Aquí están los esquemas:

var customerSchema = new mongoose.Schema({
status: {type: mongoose.Schema.Types.ObjectId, ref: 'Status'},
contact: {type: mongoose.Schema.Types.ObjectId, ref: 'Contact'}
}, { collection: 'Customer' });

customerSchema.virtual('contactName').get(function () {
   if (this.contact && this.contact.get) {
       return this.contact.get('firstName') + ' ' + this.contact.get('lastName');
   }

   return '';
});

customerSchema.virtual('statusName').get(function () {
   if (this.status && this.status.get) {
       return this.status.get('name');
   }

   return '';
});

customerSchema.set('toJSON', { virtuals: true });
customerSchema.set('toObject', { virtuals: true });
mongoose.model('Customer', customerSchema);

// STATUS
var statusSchema = new mongoose.Schema({}, { collection: 'Status' });
mongoose.model('Status', statusSchema);

// CONTACT
var contactSchema = new mongoose.Schema({
    firstName: String,
    lastName: String
}, { collection: 'Contact' });
mongoose.model('Contact', contactSchema);

Y aquí está la consulta:

exports.customerList = function (predicate ,callback){
if (!predicate) predicate = 'name';
var Customers = mongoose.model( 'Customer' );

Customers.find()
    .select('name phone address status contact contactName statusName')
    .populate('status', 'name')
    .populate('contact', 'firstName lastName')
    .sort(predicate)
    .exec(callback);
};

La consulta funciona cuando se clasifica en 'nombre' (de modo que Customer.name) o 'dirección' (Customer.address) pero no se puede hacer funcionar cuando es 'contact.firstName' (debería ser Customer.contact.firstName).

El cuarto parámetro de la función de poblado es un objeto de opción que puede tener un objeto de clasificación, pero haciendo esto:

.populate('contact', 'firstName lastName', null, { sort {'firstName': 1}})

no está funcionando (parece ordenar la lista de contactos del cliente).

Soy completamente nuevo en mangosta (y mongo). Estoy tratando de portar una rieles para proyectar / expresar.

¿Hay alguna manera de ordenar mi consulta por contact.firstName?

¡Gracias!

Edición: Terminé haciendo mi ordenación manualmente (Array.sort) pero realmente no me gusta esta solución. La clasificación está sincronizada, por lo que bloquea el subproceso principal de node.js (corríjame si me equivoco).

¿Hay algo que no entiendo? Ordenar el conjunto de datos es para mí una preocupación de la base de datos y no una aplicación ... Tenía muchas esperanzas de convertir mi aplicación de rieles en node.js, ¡pero parece que algunas operaciones estándar (buscar una cuadrícula) son realmente difíciles de implementar!