Tôi nghĩ bạn có thể sử dụng $size
, nhưng đó chỉ để tìm các mảng có kích thước nhất định, không theo thứ tự.
Từ tài liệu mongo:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24size
Bạn không thể sử dụng $ size để tìm phạm vi kích thước (ví dụ:mảng có nhiều hơn 1 phần tử). Nếu bạn cần truy vấn một phạm vi, hãy tạo trường kích thước bổ sung mà bạn tăng lên khi thêm các phần tử. Chỉ mục không thể được sử dụng cho phần $ size của truy vấn, mặc dù nếu các biểu thức truy vấn khác được bao gồm, các chỉ mục có thể được sử dụng để tìm kiếm các kết quả phù hợp trên phần đó của biểu thức truy vấn.
Có vẻ như bạn có thể khá dễ dàng thực hiện việc này với khung tổng hợp mới, chỉnh sửa: vẫn chưa ra mắt. https://www.mongodb.org/display/DOCS/Aggregation+Framework
Cập nhật Giờ đây, Khung tổng hợp đã ra đời ...
> 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
}