Você pode querer usar
db.eval
se você estiver determinado a fazer isso no lado do banco de dados. Resposta extraída de outra pergunta:
Eu não acho que isso seja possível diretamente; a documentação de classificação certamente não menciona nenhuma maneira de fornecer uma função de comparação personalizada.
Provavelmente é melhor fazer a classificação no cliente, mas se você estiver realmente determinado a fazê-lo no servidor, poderá usardb.eval()
para organizar a execução da classificação no servidor (se o seu cliente suportar).
Classificação do lado do servidor:
db.eval(function() { return db.scratch.find().toArray().sort(function(doc1, doc2) { return doc1.a - doc2.a }) });
Contra a classificação equivalente do lado do cliente:
db.scratch.find().toArray().sort(function(doc1, doc2) { return doc1.a - doc2.b });