$mongo 해서 client접속하면..
>show tables
//이 중에서 heart category(테이블)을
// user:"kim", pic:1, heart:20, date:'20140303' 이러한 테이블(category)로 가정. (_id는 자동 삽입됨. _class도 간혹 자동삽입-코드일경우)
> db.heart.find() -> 전체 record list.
> db.heart.find().sort( {pic:1} ) -> 전체 리스트를 pic필드로 asending 소팅.
> db.heart.find().limit(2) -> 리스트 중 2개만 출력.
= db.heart.aggregate({ $limit:2 })
> db.heart.distinct("user") -> [ "kim", "lee" ]
> db.heart.distinct("user").length -> 2
> db.heart.aggregate({ $group:{_id:"$pic"} }) -> pic필드를 기준으로 그루핑. ({ => ([{ 이렇게 대괄호 추가가능.(이전버전인듯)
> db.heart.aggregate({ $group:{ _id:"$pic", heartSum:{$sum:"$heart"} } }) -> 각 그룹별로 heartSum산출.
-->복합 aggregate
> db.heart.aggregate(
{$group:{ _id:"$pic", heartSum:{$sum:"$heart"} }},
{$sort:{"hearts":1}},
{$limit:2}
)
//일반적인 Query .
db.inventory.find( { type: 'food', price: { $lt: 9.95 } } )
//aggregate에 Query 추가.
db.heart.aggregate(
bla.. bla.. ,
{ $match : { score : { $gt : 70, $lte : 90 } } }
)
///////spring-data-mongo에서 적용시에는
AggregationOperation match = Aggregation.match(Criteria.where("service").is("EFT").and("source").is("MARKUP"));
AggregationOperation group = Aggregation.group("card_acceptor").and("amount_sum").sum("amount").and("tran_count").count();
Aggregation aggregation = newAggregation(match, group);
AggregationResults<StoreSummary> result = this.mongoTemplate.aggregate(aggregation, "eft_transactions", StoreSummary.class);