MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongo заявката Distinct със Sum не работи

Етапът $group има следната форма на прототип:

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

Вашето поле1 е Часове и акумулатор1 е сума ,Следователно вашето агрегиране трябва да бъде така:

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 ] 
         } 
      }
    },

  ]
);

Изход за с дадените тестови данни:

{ 
    "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
}

Прочетете допълнително тук




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb Заявка въз основа на броя на полетата в запис

  2. MongoDB:Актуализирайте поле на елемент в масив със съвпадение на друго поле на този елемент

  3. Използвайте $stdDevSamp или $stdDevPop с Spring Mongo

  4. Morphia MongoDB проверява за празно и несъществуващо поле

  5. MongoDB, Java:Извличане на свойството за дата като UTC