首页 > 解决方案 > Mongodb查询文档数组字段长度不取数组

问题描述

假设我有一个包含数组字段的集合:

{
  title: String,
  users: [String],
}

现在我需要从集合中查询一个文档列表,只使用users每个文档的长度,而不使用数组中的实际元素users(因为它可能很大,从数据库中获取它们并计算长度是不值得的) :

Collection.find({}).sort({ _id: -1 })

可能吗?

标签: node.jsmongodbmongoosemongodb-queryaggregation-framework

解决方案


您可以使用聚合运算符来查找数组$size的长度users

db.collection.aggregate([
  { "$project": { "userLength": { "$size" :"$users" }}}
])

如果要查找users数据库中存在的所有数组长度

db.collection.aggregate([
  { "$group": {
    "_id": null,
    "allUsersArrayLength": { "$sum": { "$size": "$users" }}
  }}
])

推荐阅读