Pomyślałem, że możesz użyć $size
, ale to tylko po to, aby znaleźć tablice o określonym rozmiarze, a nie uporządkować.
Z dokumentacji mongo:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24size
Nie możesz użyć $size, aby znaleźć zakres rozmiarów (na przykład:tablice zawierające więcej niż 1 element). Jeśli potrzebujesz zapytania o zakres, utwórz dodatkowe pole rozmiaru, które zwiększasz podczas dodawania elementów. Indeksów nie można używać dla części zapytania o $size, chociaż jeśli dołączone są inne wyrażenia zapytania, indeksy mogą być używane do wyszukiwania dopasowań w tej części wyrażenia zapytania.
Wygląda na to, że możesz to zrobić dość łatwo dzięki nowej strukturze agregacji, edytuj: który jeszcze nie jest dostępny.http://www.mongodb.org/display/DOCS/Aggregation+Framework
Aktualizacja Teraz framework agregacji jest niedostępny...
> 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
}