Jeg tænkte, at du måske kunne bruge $size
, men det er kun for at finde arrays af en bestemt størrelse, ikke bestilling.
Fra mongo-dokumentationen:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24size
Du kan ikke bruge $size til at finde en række størrelser (for eksempel:arrays med mere end 1 element). Hvis du har brug for at forespørge efter et område, skal du oprette et ekstra størrelsesfelt, som du øger, når du tilføjer elementer. Indekser kan ikke bruges til $size-delen af en forespørgsel, men hvis andre forespørgselsudtryk er inkluderet, kan indekser bruges til at søge efter match på den del af forespørgselsudtrykket.
Det ser ud til, at du nok ret nemt kan gøre dette med den nye aggregeringsramme, rediger: som ikke er ude endnu.http://www.mongodb.org/display/DOCS/Aggregation+Framework
Opdater Nu er Aggregation Framework ude...
> 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
}