IT/BigData와 MongoDB

MapReduce

바바옄 2015. 7. 7. 14:26
반응형

Map

쿼리한 결과를 reduce할 수 있게 데이터를 모으는 역할

 

Reduce

모아진 결과를 집계하는 역할

 

emit(key, value) 

reduce의 key와 value로 들어간다.

 

out

결과로 나온 데이터를 임시로 저장하는 collection

out : "order_totals" -> 나온 결과를 rder_totals에 임시로 저장하겠다.

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// 데이터 넣는 부분
 
var cust = {};
cust.cust_id = "A123"
cust.amount = 500;
cust.status = "A";
 
cust.cust_id = "A123"
cust.amount = 250;
cust.status = "A";
 
cust.cust_id = "B212"
cust.amount = 200;
cust.status = "A";
 
cust.cust_id = "A123"
cust.amount = 300;
cust.status = "D";
 
db.test3.insert(cust);
db.test3.find();
 
 
 
// mapReduce하는 부분
db.test3.mapReduce(
 
    function(){emit(this.cust_id, this.amount)},
 
     // Array.sum(value) -> value를 모두 더하겠다.
     // 값은 order_totals로 들어감 
    function(key, value){return Array.sum(value)},
    {
        query : {status : "A"},
        out : "order_totals"
    } 
 
);
 
// 결과 값 보기.
db.order_totals.find();
 
 
// 결과 창
 
/* 1 */
{
    "_id" : "A123",
    "value" : 750.0000000000000000
}
 
/* 2 */
{
    "_id" : "B212",
    "value" : 200.0000000000000000
}
cs

 

 

반응형

'IT > BigData와 MongoDB' 카테고리의 다른 글

INSERT / UPDATE / DELETE / FIND/ MapReduce  (0) 2015.07.08
Spring-Data-MongoDB 연동  (0) 2015.07.07
Count, Distinct, Group, Map Reduce  (0) 2015.07.07
MongoDB 설치  (0) 2015.07.07