Ich dachte, Sie könnten vielleicht $size
verwenden , aber das dient nur dazu, Arrays einer bestimmten Größe zu finden, nicht zu sortieren.
Aus der Mongo-Dokumentation:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24size
Sie können $size nicht verwenden, um einen Größenbereich zu finden (z. B. Arrays mit mehr als einem Element). Wenn Sie einen Bereich abfragen müssen, erstellen Sie ein zusätzliches Größenfeld, das Sie erhöhen, wenn Sie Elemente hinzufügen. Indizes können nicht für den $size-Teil einer Abfrage verwendet werden, wenn jedoch andere Abfrageausdrücke enthalten sind, können Indizes verwendet werden, um nach Übereinstimmungen in diesem Abschnitt des Abfrageausdrucks zu suchen.
Sieht so aus, als könnten Sie dies wahrscheinlich ziemlich einfach mit dem neuen Aggregations-Framework Bearbeiten: tun das noch nicht herausgekommen ist. http://www.mongodb.org/display/DOCS/Aggregation+Framework
Aktualisieren Jetzt ist das Aggregation Framework draußen...
> 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
}