2

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

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

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

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

可能吗?

4

1 回答 1

2

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

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

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

db.collection.aggregate([
  { "$group": {
    "_id": null,
    "allUsersArrayLength": { "$sum": { "$size": "$users" }}
  }}
])
于 2018-12-13T09:34:32.020 回答