2017-03-07 3 views
1

salut cherche à créer une nouvelle collection, pour qui obtiennent des données calculées de la collection existante,Comment créer une nouvelle collection, à partir des données calculées de la collection existante mongodb

Données d'échantillons

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

Créer nouvelle collection "Recent_MID" avec ces données

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

Pour créer une nouvelle collection, utilisez l'opérateur $ out à la fin du pipeline agrégé – radhakrishnan

Répondre

1

Utilisez $out opérateur pour créer une nouvelle collection, tout en utilisant l'agrégation

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()