Saya pikir Anda mungkin dapat menggunakan $size
, tetapi itu hanya untuk menemukan larik dengan ukuran tertentu, bukan pengurutan.
Dari dokumentasi mongo:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24size
Anda tidak dapat menggunakan $size untuk menemukan rentang ukuran (misalnya:array dengan lebih dari 1 elemen). Jika Anda perlu membuat kueri untuk rentang, buat bidang ukuran ekstra yang Anda tambahkan saat menambahkan elemen. Indeks tidak dapat digunakan untuk bagian kueri $size, meskipun jika ekspresi kueri lain disertakan, indeks dapat digunakan untuk mencari kecocokan pada bagian ekspresi kueri tersebut.
Sepertinya Anda mungkin dapat dengan mudah melakukan ini dengan kerangka kerja agregasi baru, edit: yang belum keluar.http://www.mongodb.org/display/DOCS/Aggregation+Framework
Perbarui Sekarang Kerangka Agregasi sudah keluar...
> 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
}