sql >> Database >  >> NoSQL >> MongoDB

Mongo-query Distinct met Sum werkt niet

De $group-fase heeft de volgende prototypevorm:

{ $group: { _id: <expression>, <field1>: { <accumulator1> : <expression1> }, ... } }

Uw veld1 is Uren en accumulator1 is som ,Daarom zou uw aggregatie als volgt moeten zijn:

db.pms_teamleadtimesheets.aggregate(

  // Pipeline
  [
    // Stage 1
    {
      $match: {
      UserName:"Admin",
      FacilityID:"59a53f0c6077b2a029c52b7f",
      ProjectID:"5a042ba02af18ac8388bd3c0"
      }
    },

    // Stage 2
    {
      $group: {
         _id: { ProjectID: "$ProjectID",
            Task: "$Text", Phase: "$phase",
            Comments: "$Comments", 
            TaskType: "$TaskType", 
            Items: "$Items", 
            UserName: "$UserName", 
            IsBillable: "$IsBillable", 
            Date: "$StartDate"
            },
            Hours:{$sum:"$Hours" }
      }
    },

    // Stage 3
    {
      $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: [ "$Hours", 60 ] 
         } 
      }
    },

  ]
);

Uitgang voor met de gegeven testgegevens:

{ 
    "ProjectID" : "5a042ba02af18ac8388bd3c0", 
    "Phase" : "Analysis", 
    "Task" : "Analysis", 
    "Comments" : "2", 
    "TaskType" : "DELIVERY", 
    "Items" : "CRI", 
    "UserName" : "Admin", 
    "IsBillable" : true, 
    "Date" : "29-05-2018", 
    "Hours" : 4.0
}
{ 
    "ProjectID" : "5a042ba02af18ac8388bd3c0", 
    "Phase" : "Analysis", 
    "Task" : "Analysis", 
    "Comments" : "8", 
    "TaskType" : "DELIVERY", 
    "Items" : "Others", 
    "UserName" : "Admin", 
    "IsBillable" : true, 
    "Date" : "28-05-2018", 
    "Hours" : 4.0
}
{ 
    "ProjectID" : "5a042ba02af18ac8388bd3c0", 
    "Phase" : "Analysis", 
    "Task" : "Analysis", 
    "Comments" : "4", 
    "TaskType" : "DELIVERY", 
    "Items" : "Others", 
    "UserName" : "Admin", 
    "IsBillable" : true, 
    "Date" : "28-05-2018", 
    "Hours" : 4.0
}

Lees hier verder




  1. Node.js detecteert wanneer twee mangoesten zijn gevonden

  2. MongoDB best practice voor verwijzingen

  3. Twee elementen vinden in een reeks documenten die in een bepaalde volgorde verschijnen

  4. Selderij/Redis dezelfde taak wordt meerdere keren parallel uitgevoerd