반응형
Robomongo 실행 방법
소스코드
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112 |
// 등록된 글 중 "number" 별 등록 개수 구하는 Query
// 데이터 준비
var post = {};
function addPost(){
for(var i = 0; i<100; i++){
for(var j=0; j<100; j++){
post.number = i;
post.postNumber = j;
post.date = new Date();
post.comment = "Hi hello"+i+j;
db.post.insert(post);
}
}
}
addPost();
db.post.count();
// Group화 하기
db.runCommand( {"group" : {
"ns" : "post",
"key" : {"number" : 1},
"initial" : {"count" : 0},
"$reduce" : function(curr, result){
if(curr.number == result.number){
result.count +=1;
}
},
"condition" : {"number" : {"$gte" : 90}}
}})
// 등록된 글들의 tag별 개수 구하기
// 자료 준비
var post = {};
function addPost(){
for(var i = 0; i<50; i++){
post.number = 0;
post.tags = ["NoSQL", "MySQL", "Oracle"];
db.test1.insert(post);
}
for(var i = 0; i<15; i++){
post.number = 0;
post.tags = ["NoSQL"];
db.test1.insert(post);
}
for(var i = 0; i<5; i++){
post.number = 0;
post.tags = ["Oracle"];
db.test1.insert(post);
}
for(var i = 0; i<10; i++){
post.number = 1;
post.tags = ["NoSQL", "Winter"];
db.test1.insert(post);
}
for(var i = 0; i<5; i++){
post.number = 1;
post.tags = ["NoSQL"];
db.test1.insert(post);
}
for(var i = 0; i<15; i++){
post.number = 2;
post.tags = ["Sqring"];
db.test1.insert(post);
}
}
addPost();
db.test1.find();
// 그룹화 하기
db.runCommand({"group" : {
"ns" : "test1",
"key" : {"number" : 1},
"initial" : {"tags" : {}},
"$reduce" : function(curr, result){
// 배열의 인덱스 값 가져오기
for(i in curr.tags){
if(curr.tags[i] in result.tags){
result.tags[curr.tags[i]]++;
}
else{
result.tags[curr.tags[i]] = 1;
}
}
},
// 결과 중에 제일 많은 것 가져오기
"finalize" : function(result){
var mostPopular = 0;
for(i in result.tags){
if(result.tags[i] > mostPopular){
result.tag = i;
mostPopular = result.tags[i];
}
}
delete result.tags
}
}})
|
cs |
반응형
'IT > BigData와 MongoDB' 카테고리의 다른 글
INSERT / UPDATE / DELETE / FIND/ MapReduce (0) | 2015.07.08 |
---|---|
Spring-Data-MongoDB 연동 (0) | 2015.07.07 |
MapReduce (0) | 2015.07.07 |
MongoDB 설치 (0) | 2015.07.07 |