按数组长度排序mongodb查询

Ram*_*ddy 2 mongodb node.js mongodb-query aggregation-framework

我有像下面这样的 MongoDB 文档:是否有查询以 subscribedGroups 的长度对文档进行排序?可以是升序或降序。

{ 
    "_id" : ObjectId("58c29d9ec79d585c0e16b110"), 
    "subscribedGroups" : [
      ObjectId("5b28a9190c8c0d0014b03a0c"), 
      ObjectId("5b2930650b813a0014a3294d"), 
      ObjectId("5b29f1b5243d470014d6d351")
    ]
}
Run Code Online (Sandbox Code Playgroud)

Ash*_*shh 5

您可以找到subscribedGroupsusing的大小,$size然后轻松找到$sort数组的长度

db.collection.aggregate([
  {
    $addFields: {
      subscribedGroupsLength: {
        $size: "$subscribedGroups"
      }
    }
  },
  {
    $sort: {
      subscribedGroupsLength: -1
    }
  }
])
Run Code Online (Sandbox Code Playgroud)

查看示例