Mongodb 将字段分组/聚合在一起

Mongodb 将字段分组/聚合在一起,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个导入MongoDB的csv文件,它的结构如下: 我想用start as id将其分组,并将所有其他字段作为该字段的子字段,例如: "_id" : "A" { "destination" : B { "duration" : 5 "duration" : 3 "duration" : 6 } "destination"

我有一个导入MongoDB的csv文件,它的结构如下:

我想用start as id将其分组,并将所有其他字段作为该字段的子字段,例如:

  "_id" : "A" {
            "destination" : B {
                "duration" : 5
                "duration" : 3
                "duration" : 6
            }
            "destination" : C {
                "duration" : 10
            }
  }
  "_id" : "B" {
            "destination" : A {
                "duration" : 4
            }
  }
    {   "Destination": B,
        "Duration": 5
    },
    {
        "EndStationID": B,
        "Duration": 3
    }
我了解MongoDB聚合命令的基本知识,我根据Yogesh的回答尝试了以下方法:

db.test.aggregate([
{   "$group": {
    "_id": "$start",
    "Trips": {
        "$push": {
            "Destination" : "$destination",
            "Duration"     : "$duration"
        }
    }
    }
}],{allowDiskUse:true}).pretty()
我的问题是如何将持续时间分组到其中。现在,对于从A到B的两次“行程”,有两个条目如下:

  "_id" : "A" {
            "destination" : B {
                "duration" : 5
                "duration" : 3
                "duration" : 6
            }
            "destination" : C {
                "duration" : 10
            }
  }
  "_id" : "B" {
            "destination" : A {
                "duration" : 4
            }
  }
    {   "Destination": B,
        "Duration": 5
    },
    {
        "EndStationID": B,
        "Duration": 3
    }
我如何将它们组合成这样的结构:

    {  "Destination": B {
            "Duration": 5,
            "Duration": 3
    }

根据您的CSV结构,我创建了以下集合

{ "start" : "A", "destination" : "B", "duration" : 5 }
{ "start" : "A", "destination" : "B", "duration" : 3 }
{ "start" : "A", "destination" : "B", "duration" : 6 }
{ "start" : "B", "destination" : "A", "duration" : 4 }
首先,您应该对开始和目标字段进行分组,然后将持续时间推送到数组中,以便按如下方式进行聚合查询:

db.collectionName.aggregate({
    "$group": {
    "_id": {
        "start": "$start",
        "dest": "$destination"
    },
    "duration": {
        "$push": {
            "duration": "$duration"
        }
    }
    }
}, {
    "$project": {
    "_id": "$_id.start",
    "destination": "$_id.dest",
    "duration": 1
    }
}).pretty()

谢谢,我最后部分使用了你的方法,并在这里给出了答案: