mongodb の aggregate
grouping したときのメモ
% mongo --version MongoDB shell version: 2.6.1 % mongod --version db version v2.6.1 2014-05-13T08:53:12.464+0900 git version: nogitversion
use test_db db.dropDatabase(); db.testaggregate.insert( { 'a': 1, }); db.testaggregate.insert( { 'a': 2, }); db.testaggregate.insert( { 'a': 2, }); db.testaggregate.insert( { 'a': 3, } ); db.testaggregate.insert( { 'a': 3, } ); db.testaggregate.insert( { 'a': 3, } );
grouping
db.testaggregate.aggregate({ $group : { _id : "$a", count: {$sum: 1} } }); { "_id" : 3, "count" : 3 } { "_id" : 2, "count" : 2 } { "_id" : 1, "count" : 1 }
_id を保持したい場合は以下のようにするそうな
db.testaggregate.aggregate( { $group : { _id : "$a", count: {$sum: 1}, originalIds: { $push: "$_id" } } } ); { "_id" : 3, "count" : 3, "originalIds" : [ ObjectId("5371651bedeb7279703bc565"), ObjectId("5371651bedeb7279703bc566"), ObjectId("5371651bedeb7279703bc567") ] } { "_id" : 2, "count" : 2, "originalIds" : [ ObjectId("5371651bedeb7279703bc563"), ObjectId("5371651bedeb7279703bc564") ] } { "_id" : 1, "count" : 1, "originalIds" : [ ObjectId("5371651aedeb7279703bc562") ] }
SEE ALSO
http://docs.mongodb.org/manual/reference/operator/aggregation/push/