【问题标题】:Mongodb Aggregation Pipeline Count Total size across multiple fieldsMongodb聚合管道计数跨多个字段的总大小
【发布时间】:2018-06-02 13:18:44
【问题描述】:
`"ActivityScores" : {
            "Spring" : [
                {
                    "ActivityId" : "8fd38724-7e7d-4518-bd49-d38a8b4b3435", 
                    "ActivityTime" : "2017-05-25T16:07:02.000-06:00"
                }
            ], 
            "Winter" : [
                {
                    "ActivityId" : "90d2a976-19d9-4ce0-aa88-d32c122d173b", 
                    "ActivityTime" : "2017-02-14T22:50:00.000-06:00"
                }
            ], 
            "Fall" : [
                {
                    "ActivityId" : "84b8c41e-788f-4acd-abec-dc455285972b", 
                    "ActivityTime" : "2016-11-15T22:37:02.000-06:00"
                }, 
                {
                    "ActivityId" : "157af880-d47b-42fc-8ecf-ecfc1bbb56b1",  
                    "ActivityTime" : "2016-09-01T22:50:05.000-06:00"
                }
            ]
        }, 
        "Grade" : "2", 
        "GradeTag" : "GRADE_2", `

我正在寻找聚合查询以获得ActivityIds 的总数。我尝试了$group$unwind$size$addToset 的各种组合,但它们似乎都不起作用。我只需要使用聚合框架来查找总活动。我不想使用 javascript 或 python 浏览每个文档来获取总数。有什么简单的方法吗?

【问题讨论】:

    标签: mongodb pipeline aggregation


    【解决方案1】:

    Thanks.We are on version 3.2.Finally below combination works. ActivityScores 是我的 Schema.Working 聚合管道中 entity.SchoolYears 的字段。

    db.studentcontentareadocument.aggregate(
    [
    {
      $project: { 
          "SpringActivitiesPerDoc" : {
              "$size" : "$entity.SchoolYears.ActivityScores.Spring"
          }, 
          "WinterActivitiesPerDoc" : {
              "$size" : "$entity.SchoolYears.ActivityScores.Winter"
          }, 
          "FallActivitiesPerDoc" : {
              "$size" : "$entity.SchoolYears.ActivityScores.Fall"
          }
      }
    },
    {
      $project: { 
          "TotalActivitiesPerDoc" : {
              "$add" : [
                  "$SpringActivitiesPerDoc", 
                  "$WinterActivitiesPerDoc", 
                  "$FallActivitiesPerDoc"
              ]
          }
      }
    },
    {
      $group: { 
          "_id" : null, 
          "TotalActivities" : {
              "$sum" : "$TotalActivitiesPerDoc"
          }
      }
    },
    {
      $project: { 
          "_id" : 0, 
          "TotalSGPActivities" : "$TotalActivities"
      }
    }
    ],
    {
       cursor: {
         batchSize: 50
    },
    
    allowDiskUse: true
    }
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 2018-06-03
      • 1970-01-01
      • 2014-11-08
      相关资源
      最近更新 更多