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

时间:2016-04-23 14:56:12

标签: mongodb mongoose aggregation-framework

我的藏品中有文件

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

我希望按_id查找文档,并在每个tasks

中获取project的数量

我写了这个aggregate代码,但它在tasks所有projects中的tasks数量,而不是每个User.aggregate([ { $match: { _id: Mongoose.Types.ObjectId(userId)}}, { $project: { _id: 0, 'projects.name': 1, 'projects.count': { $size: '$projects.tasks' } }} ]) 数组的大小

import tweepy
auth = tweepy.OAuthHandler(consumer_key=con_key, consumer_secret=con_secret)
auth.set_access_token(acc_token, acc_secret)

#Connect to the Twitter API using the authentication
api = tweepy.API(auth)

tweet_list = api.search(q = '#23squadgoals')

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

1 个答案:

答案 0 :(得分:1)

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

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