[MongoDB] Array の length で sort するために aggregate を使う
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 } //... |