如何使用mongoose聚合获取嵌套在另一个数组中的数组大小

3

我在我的集合中有一份文档

{
  _id: "8sd7f8s7df8s7df8"
  projects: [
    {
      name: inbox,
      tasks: [
        { name: 'task1' }
        { name: 'task2' }
        { name: 'task3' }
      ]
    }
  ]
}

我想通过_id查找文档,并获取每个项目任务的数量。

我编写了这个aggregate代码,但它给我返回的是所有项目任务的数量,而不是每个tasks数组的大小。

User.aggregate([
  { $match: { _id: Mongoose.Types.ObjectId(userId)}},
  { $project: {
    _id: 0,
    'projects.name': 1,
    'projects.count': { $size: '$projects.tasks' }
  }}
])

我该如何更改以获取正确的值?
1个回答

2

在使用$project流水线之前,先尝试使用$unwind操作:

User.aggregate([
    { "$match": { "_id": userId } },
    { "$unwind": "$projects" },
    { 
        "$project": {
            "_id": 0,
            "projects.name": 1,
            "projects.count": { "$size": "$projects.tasks" }
        }
    }
]).exec(callback);

1
谢谢@chridam,这很有帮助。 - arthurr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接