336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
MongoDB 집계 함수 쿼리 실습
@ Distinct 실습
Distinct를 실습하기 위해서 배열이 있는 blog로 가서 실습해본다
현재 replies에는 중복된 값들이 들어가 있기 때문에 단 4가지만 나온 것을 볼 수 있다
이제 또 test에서 실습을 해본다
test에 있는 값중에 pageView가 모두 0을 중복이 되어 있어 0 한개가 나오는 것을 볼 수 있다
@ Group 실습
실습하기에 있어서 데이터를 먼저 집어 넣는다
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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);
}
}
}
|
cs |
그런 후 addPost();를 입력하여 데이터를 넣어보자
위와 같이 펑션으로 만들어서 입력을 하게 되면 10,000개의 데이터를 넣게 된다
데이터가 잘 들어간 것을 볼 수 있다
-
등록된 글 중 "number" 별 등록 개수를 구하는 Query
- 1
2
3
4
5
6
7
8
9
10
11db.runCommand ( {"group" : {"ns" : "post","key" : {"number" : 1},"initial" : {"count" : 0},"$reduce" : function (curr, result) {if (curr.number == result.number) {result.count += 1;}}}})cs - 실행 결과
- 위와 같이 나오면 문제없이 나온 것이다
- 등록된 글 중 90이상의 "number" 별 등록 개수를 구하는 Query
- 1
2
3
4
5
6
7
8
9
10
11db.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} }}})cs - 실행 결과
- 실행 결과가 90 이상인 것만 나온 것을 볼 수 있다
- condition으로 조건을 지정해줄 수 있다
- 조금 간결하게 출력하기
- 1
2
3
4
5
6
7
8
9
10db.post.group({"key" : {"number" : 1},"initial" : {"count" : 0},"$reduce" : function(curr, result) {if(curr.number == result.number) {result.count++;}},"condition" : {"number" : {"$gte" : 90}}});cs - 실행 결과
이제는 배열을 이용한 group을 하기위해 자료를 준비해본다
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
|
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 = 00; i < 15; i++) {
post.number = 2;
post.tags = ["Spring"];
db.test1.insert(post);
}
}
|
'[ Developer ] > MongoDB' 카테고리의 다른 글
[MongoDB] 몽고디비와 스프링 연동 Spring framework (0) | 2016.06.29 |
---|---|
[MongoDB] 몽고디비 색인 Index (0) | 2016.06.29 |
[MongoDB] 몽고디비 집계 함수 쿼리 개념 (0) | 2016.06.29 |
[MongoDB] 몽고디비 쿼리 정렬 Sort (0) | 2016.06.29 |
[MongoDB] 몽고디비 skip으로 쿼리 결과 건너뛰기 (0) | 2016.06.28 |