MongoDB - 2

Aggregation Framework: 

$project:

a document stream by renaming, adding, or removing fields 

#alter Data
db[:zips].find.aggregate([{:$project => {:_id=> 1, :city=> {:$toLower => '$city'}}}]).each {|r| pp r}

$group: 

db[:zips].find.aggregate([{:$group => {:_id => '$state', :population => {:$sum => '$pop'}}}]).each {|r| pp r}

#max 
db[:zips].find.aggregate([{:$group => {:_id => '$state', :max_zip=> {:$max=> '$pop'}}}]).each {|r| pp r}

#min 
db[:zips].find.aggregate([{:$group => {:_id => '$state', :min_zip=> {:$min=> '$pop'}}}]).each {|r| pp r}

#push - return array of all values... 
db[:zips].find.aggregate([{:$group => {:_id => '$state', :zips=> {:$push=> '$_id'}}}]).each {|r| pp r}

#addToSet - return array of all value no duplicate 
db[:zips].find.aggregate([{:$group => {:_id => '$state', :zips=> {:$addToSet=> '$_id'}}}]).each {|r| pp r}

$match:

$unwind:

扫描二维码关注公众号,回复: 5993019 查看本文章
#unwind return one document 

db[:zips].find().aggregate([{:$match => {:city=>'ELMIRA'},group=>{:_id=>{:city=>'$city',:state=>'$state'},:zips=>{:addToSet=>'$_id'}}},{:$unwind=>'$zips'}]).each {|r| pp r}

猜你喜欢

转载自www.cnblogs.com/vixennn/p/10760131.html