Achei que você poderia usar
$size
, mas isso é apenas para encontrar arrays de um determinado tamanho, não ordenando. Da documentação do mongo:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24size
Você não pode usar $size para encontrar um intervalo de tamanhos (por exemplo:arrays com mais de 1 elemento). Se você precisar consultar um intervalo, crie um campo de tamanho extra que você incrementa ao adicionar elementos. Os índices não podem ser usados para a parte $size de uma consulta, embora, se outras expressões de consulta forem incluídas, os índices podem ser usados para pesquisar correspondências nessa parte da expressão de consulta.
Parece que você pode fazer isso com bastante facilidade com a nova estrutura de agregação, edit: que ainda não foi lançado.http://www.mongodb.org/display/DOCS/Aggregation+Framework
Atualizar Agora o Quadro de Agregação está disponível...
> db.test.aggregate([
{$unwind: "$answers"},
{$group: {_id:"$_id", answers: {$push:"$answers"}, size: {$sum:1}}},
{$sort:{size:1}}]);
{
"result" : [
{
"_id" : ObjectId("5053b4547d820880c3469365"),
"answers" : [
{
"content" : "answer1"
},
{
"content" : "2nd answer"
}
],
"size" : 2
},
{
"_id" : ObjectId("5053b46d7d820880c3469366"),
"answers" : [
{
"content" : "answer1"
},
{
"content" : "2nd answer"
},
{
"content" : "The third answer"
}
],
"size" : 3
}
],
"ok" : 1
}