node.js - 按数组mongodb查询的长度排序

标签 node.js mongodb mongodb-query aggregation-framework

我有如下的 MongoDB 文档: 是否有查询以订阅组的长度对文档进行排序?可以是升序或降序。

{ 
    "_id" : ObjectId("58c29d9ec79d585c0e16b110"), 
    "subscribedGroups" : [
      ObjectId("5b28a9190c8c0d0014b03a0c"), 
      ObjectId("5b2930650b813a0014a3294d"), 
      ObjectId("5b29f1b5243d470014d6d351")
    ]
}

最佳答案

您可以使用 $size 找到 subscribedGroups 的大小然后轻松$sort与数组的长度

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

参见 sample

关于node.js - 按数组mongodb查询的长度排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50942173/

相关文章:

node.js - 用于 CSV 解析的 Highland.js

javascript - ReactJS 应用程序中的 Chart.js : no terminal error, 但没有渲染

python - Pymongo 使用 $in 查找列表

mongodb - $sum 有多个条件

java - 如何在执行 mongotemplate.save 操作期间获取 mongodb 集合中文档的对象 id?

javascript - nodejs - 如何比较bcrypt的两个哈希密码

python - Node.JS:尝试使用 docker-compose up 运行 docker 项目,由于 node-sass 和 node-gyp 退出

python - 与MongoDB结合使用Dataclass中的 '_id'应该如何处理?

java - $set 和位置运算符在 Java 中不起作用?

javascript - Mongo 聚合计数值实例