MongoDB で Array type な field を length で sort して取得するサンプルクエリをご紹介します。
MongoDB Query
db.posts.aggregate(
[
{ $unwind: "$likes" },
{ $group: {
_id: "$_id",
size: { $sum: 1 }
}
},
{ $sort: { size: -1 } }
])
Results
{ "_id" : ObjectId("514e23e06aeaa880410321aa"), "size" : 590 }
{ "_id" : ObjectId("545c796972b4c28015ab4eac"), "size" : 395 }
{ "_id" : ObjectId("51440f7d4ca4c41367001dff"), "size" : 321 }
{ "_id" : ObjectId("51d6eef05204c9046100031d"), "size" : 315 }
{ "_id" : ObjectId("54ae81f1f158d13d60c50116"), "size" : 271 }
//...