J'ai Collections attributions, états, Cessionnaire.MongoDB Groupe compte par occurences de valeurs et de sortie comme nouveau champ
Missions Domaines: [_id, statut Assigné]
Assigné et Etat Domaines: [_id, le nom].
Il peut y avoir de nombreuses missions associées à divers Statut et Assigné collections (liés via _id
champ), Il n'y a pas d'imbrication ou des données complexes.
je besoin d'une requête pour toutes les affectations ids
où cessionnaires sont la ligne, Statut sont les colonnes, il est combiné cellulaire avec les count
total compte à la fin.
Pour vous aider à visualiser, je joins l'image ci-dessous. Je suis nouveau à complexe Mongo DB Aggregate complexe, veuillez me guider pour obtenir une requête.
Remarque: Les données dans Statut et collection Assigné sera dynamique. Rien n'est prédéterminé dans la requête. Ainsi, les lignes et les colonnes vont se développer dynamiquement à l'avenir, si la requête est donnée pagination, alors il serait d'une grande aide. Je ne peux pas écrire une requête avec des noms codés en dur
status
comme'pending'
,'completed'
etc. Comme les données doivent augmenter et les données existantes peuvent changer comme'pending task'
,'completed work'
.
est Ci-dessous ma requête
db.getCollection('Assignments').aggregate([
{
"$group": {
"_id": {
"assignee": "$assignee",
"statusId": "$statusId"
},
"statusCount": { "$sum": 1 }
}
},
{
"$group": {
"_id": "$_id.assignee",
"statuses": {
"$push": {
"statusId": "$_id.statusId",
"count": "$statusCount"
},
},
"count": { "$sum": "$statusCount" }
}
},
]);
Ci-dessous le format de sortie:
{
"_id" : "John",
"statuses" : {
"statusId" : "Pending",
"count" : 3.0
},
"count" : 3.0
}
{
"_id" : "Katrina",
"statuses" : [{
"statusId" : "Pending",
"count" : 1.0
},
{
"statusId" : "Completed",
"count" : 1.0
},
{
"statusId" : "Assigned",
"count" : 1.0
}],
"count" : 3.0
}
{
"_id" : "Collins",
"statuses" : {
"statusId" : "Pending",
"count" : 4.0
},
"count" : 4.0
}
Résultat attendu est:
{
"_id" : "Katrina",
"Pending" : 1.0,
"Completed" : 1.0,
"Assigned" : 1.0,
"totalCount" : 3.0
}
Toute idée sur la façon de nombreux différents statusId
pour différents assignee
comme des clés et non des valeurs dans un seul document.
Merci beaucoup. J'apprécie votre temps pour ma question. Mais vous avez codé en dur les valeurs 'status'. J'ai mentionné dans la question que les valeurs 'status' et' assignataire' vont augmenter dans le futur. La requête ci-dessus n'est donc pas adaptée au contenu croissant de manière dynamique. –