MongoDB查询文档数组字段长度而不获取数组

时间:2018-12-13 09:16:53

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

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

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

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

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

有可能吗?

1 个答案:

答案 0 :(得分:2)

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

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

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

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