【问题标题】:How to get size of array nested in another array with mongoose aggregate如何使用猫鼬聚合获取嵌套在另一个数组中的数组的大小
【发布时间】:2017-06-23 20:17:55
【问题描述】:

我的收藏中有文档

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

我想通过_id 查找文档并在每个project 中获取tasks 的数量

我写了这个aggregate 代码,但它让我得到了所有projectstasks 的数量,而不是每个tasks 数组的大小

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

我应该如何改变它以获得正确的价值?

【问题讨论】:

    标签: mongodb mongoose aggregation-framework


    【解决方案1】:

    尝试在 $project 管道之前先执行 $unwind

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

    【讨论】:

    • 谢谢@chridam,这有帮助。
    猜你喜欢
    • 2021-04-14
    • 2020-01-02
    • 2020-05-10
    • 2021-05-06
    • 2015-08-21
    • 2021-04-15
    • 2021-09-12
    • 2014-08-13
    • 2021-10-16
    相关资源
    最近更新 更多