Mongo query Distinct with Sum no funciona
Aquí he actualizado mi pregunta. Estos son los datos de entrada, puede usar este comando para insertar en su base de datos local:
db.pms_teamleadtimesheets.insertMany( [
{ "Text" : "Analysis",
"Comments" : "4",
"TaskType" : "DELIVERY",
"Items" : "Others",
"StartDate" : "28-05-2018",
"EndDate" : "2018-05-28",
"Hours" : 240,
"phase" : "Analysis",
"ProjectID" : "5a042ba02af18ac8388bd3c0",
"UserName" : "Admin",
"FacilityID" : "59a53f0c6077b2a029c52b7f",
"TaskID" : "5b0baafffb8df2401af90fea",
"TaskDescription" : "Analysis",
"IsBillable" : true
},
{ "Text" : "Analysis",
"Comments" : "8",
"TaskType" : "DELIVERY",
"Items" : "Others",
"StartDate" : "28-05-2018",
"EndDate" : "2018-05-28",
"Hours" : 240,
"phase" : "Analysis",
"ProjectID" : "5a042ba02af18ac8388bd3c0",
"UserName" : "Admin",
"FacilityID" : "59a53f0c6077b2a029c52b7f",
"TaskID" : "5b0baafffb8df2401af90fea",
"TaskDescription" : "Analysis",
"IsBillable" : true
},
{"Text" : "Analysis",
"Comments" : "2",
"TaskType" : "DELIVERY",
"Items" : "CRI",
"StartDate" : "29-05-2018",
"EndDate" : "2018-05-29",
"Hours" : 120,
"phase" : "Analysis",
"ProjectID" : "5a042ba02af18ac8388bd3c0",
"UserName" : "Admin",
"FacilityID" : "59a53f0c6077b2a029c52b7f",
"TaskID" : "5b0baafffb8df2401af90fea",
"TaskDescription" : "Analysis",
"IsBillable" : true
},
{ "Text" : "Analysis",
"Comments" : "2",
"TaskType" : "DELIVERY",
"Items" : "CRI",
"StartDate" : "29-05-2018",
"EndDate" : "2018-05-29",
"Hours" : 120,
"phase" : "Analysis",
"ProjectID" : "5a042ba02af18ac8388bd3c0",
"UserName" : "Admin",
"FacilityID" : "59a53f0c6077b2a029c52b7f",
"TaskID" : "5b0baafffb8df2401af90fea",
"TaskDescription" : "Analysis",
"IsBillable" : true }
] );
De esta colección, quiero hacer distinción y suma. Aquí distinto funciona bien pero la suma no funciona.
esta es la consulta que he usado:
db.Collection.aggregate([
//where query
{ "$match": { UserName: "USER",FacilityID:"FID",ProjectID:"ID" } },
//distinct column
{ "$group": { _id: { ProjectID: "$ProjectID", Task: "$Text", Phase: "$phase", Comments: "$Comments", TaskType: "$TaskType", Items: "$Items", UserName: "$UserName", IsBillable: "$IsBillable", Date: "$StartDate", Hours:{$sum:"$Hours" } }} },
//provide column name for the output
{ "$project": { _id: 0, ProjectID: "$_id.ProjectID" ,Phase: "$_id.Phase",Task: "$_id.Task",Comments: "$_id.Comments",TaskType: "$_id.TaskType",Items: "$_id.Items",UserName: "$_id.UserName",IsBillable: "$_id.IsBillable",Date: "$_id.Date",Hours: { $divide: [ "$_id.Hours", 60 ] } } }
]);
Estoy obteniendo el resultado así. No calcula la suma del valor. @
as horas totales no se agregan aquí. Debería devolver 4 pero aquí está devolviendo 2.
¿Alguien puede resolverme para resolver esto?