A mediana é um pouco complicada de calcular no caso geral, porque envolve a classificação de todo o conjunto de dados ou o uso de uma recursão com uma profundidade que também é proporcional ao tamanho do conjunto de dados. Essa talvez seja a razão pela qual muitos bancos de dados não possuem um operador mediano pronto para uso (o MySQL também não possui um).
A maneira mais simples de calcular a mediana seria com essas duas instruções (assumindo que o atributo no qual queremos calcular a mediana é chamado de
a
e queremos isso em todos os documentos da coleção, coll
):count = db.coll.count();
db.coll.find().sort( {"a":1} ).skip(count / 2 - 1).limit(1);
Isso é o equivalente ao que as pessoas sugerem para o MySQL.