2016-04-23 7 views
1

ich Dokument in meiner SammlungWie Größe des Arrays in einem anderen Array mit Mungo Aggregat verschachtelt bekommen

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

möchte ich finden Dokument von _id und bekommen Anzahl von tasks in jedem project

Ich schrieb haben dieser aggregate Code aber es wird mir Anzahl von tasks in allen projects eher dann Größe jeden tasks Array

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

Wie sollte ich dies ändern, um den richtigen Wert zu erhalten?

Antwort

1

Versuchen Sie, eine $unwind zuerst vor dem $project Pipeline tun:

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

Dank @chridam, das hilft. – arthurr

Verwandte Themen