2017-03-07 4 views
1

hallo ist auf der Suche erstellen Sie eine neue Sammlung zu erstellen, für die Daten aus bestehenden Sammlung berechnet bekommen,Wie neue Kollektion, mit berechneten Daten aus bestehenden Sammlung mongodb

Beispieldaten

{MID:100,stage:6, 
    hustle:[{id:1,name:"jack",level:4,target:10,completedTime:new Date("2015-12-12")}, 
    {id:1,name:"jack",level:4,target:10,completedTime:new Date("2015-12-12")}, 
    {id:1,name:"jack",level:4,target:10,completedTime:new Date("2015-12-12")}, 
    {id:1,name:"jack",level:4,target:10,completedTime:new Date("2015-12-12")}, 
    {id:82,name:"Mario",level:2,target:8,completedTime:new Date("2015-12-15")}, 
    {id:82,name:"Mario",level:2,target:8,completedTime:new Date("2015-12-15")}, 
    {id:82,name:"Mario",level:2,target:8,completedTime:new Date("2015-12-15")}, 
    {id:82,name:"Mario",level:2,target:8,completedTime:new Date("2015-12-15")}]} 

neue Kollektion erstellen "Recent_MID" mit diesen Daten

{ 
    "_id": 82, 
    "name": "Mario", 
    "level": 2, 
    "recentTIme": ISODate("2015-12-15T00:00:00Z"), 
    "accessCount": 4 
} { 
    "_id": 1, 
    "name": "jack", 
    "level": 4, 
    "recentTIme": ISODate("2015-12-12T00:00:00Z"), 
    "accessCount": 4 
} 
+0

Um eine neue Sammlung zu erstellen, verwenden Sie den Operator $ out am Ende der Gesamtpipeline – radhakrishnan

Antwort

1

verwenden $out Betreiber neue Kollektion zu schaffen, während der Aggregation mit

db.mid.aggregate([{ 
     $unwind: "$hustle" 
    }, { 
     $group: { 
      _id: "$hustle.id", 
      name: { 
       $first: "$hustle.name" 
      }, 
      level: { 
       $first: "$hustle.level" 
      }, 
      recentTIme: { 
       $first: "$hustle.completedTime" 
      }, 
      accessCount: { 
       $sum: 1 
      } 
     } 
    }, { 
     $out: "Recent_MID" 
    }]).pretty() 
Verwandte Themen