2017-03-07 20 views
1

喜我希望創建一個新的集合,對於獲得從現有的集合計算的數據,如何創建新的收集,使用計算數據從現有的集合的MongoDB

的樣本數據

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

創建新的收藏「Recent_MID」這個數據

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

要創建新集合,請在聚合管道末尾使用$ out操作符 – radhakrishnan

回答

1

使用$out 運營商創造新的集合,同時採用聚集

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() 
相關問題