728x90
db.score.insertMany([
{name:'홍길동',kor: 90, eng:80, match:98, test:'midterm'},
{name:'이순신',kor: 100, eng:100, match:76, test:'final'},
{name:'김선달',kor: 80, eng:55, match:67, test:'midterm'},
{name:'강호동',kor: 70, eng:68, match:89, test:'midterm'},
{name:'유재석',kor: 60, eng:80, match:100, test:'final'},
{name:'신동엽',kor: 100, eng:59, match:77, test:'midterm'},
{name:'조세호',kor: 90, eng:100, match:100, test:'final'}
])
몽고디비에 사용할수 있는 함수들은 여기서 볼수있습니다!
db.score.aggregate()
find()함수 처럼 데이터를 출력시키는 함수입니다.
db.score.aggregate({$project:{_id:0, name:1, kor:1, test:1}})
다양한 함수를 사용할수 있습니다.
db.score.aggregate({$match:{kor:{$gt:80}}})
$match를 작성하면 조건에 해당되는 데이터를 출력합니다.
$gt는 크다라는 뜻을 가지고 있는데 공식 홈페이지에서는 Matches values that are greater than a specified value. 라고 설명합니다.
해당 코드에서는 kor이 80보다 큰것들을 출력합니다.
db.score.aggregate({$group:{_id:'test', average:{$avg:'$kor'}}})
average라는 이름으로 id가 'test'이고 kor의 avg(평균)을 그룹화 하여 출력합니다.
db.score.aggregate({$group:{_id:'$test', average:{$avg:'$kor'}}})
-- test가 final인 document의 이름과 수학, 영어를 출력하자
db.score.aggregate({$match:{test:'final'}}, {$project:{name:1, math:1, eng:1}})
// test가 midterm인 document의 영어 평균을 출력하자
db.score.aggregate({$match:{test:'midterm'}}, {$project:{eng:1}}, {$group:{_id:'midterm_eng_avg', 'eng_average':{$avg:'$eng'}}})
-- test가 final인 document들의 이름, 국어, 영어 출력하고, '국어와 영어의 합'을 함께 출력하자.
function myMap(){
emit(this.score, {name: this.name, kor: this.kor, eng: this.eng, test: this.test})
}
function myReduce(key, values){
var result = {name: new Array(), kor: new Array(), eng: new Array(), total: new Array()}
values.forEach(function(val){
if(val.test == 'final'){
result.name += val.name + " ";
result.kor += val.kor + " ";
result.eng += val.eng + " ";
result.total += val.kor + val.eng + " ";
}
});
return result;
}
db.score.mapReduce(myMap, myReduce, {out:{replace:'myRes'}})
db.myRes.find();
db.myfriends.insertOne({name: '아이언맨', buddy:['토르','헐크','호크아이']})
db.myfriends.insertOne({name: '슈퍼맨', buddy:['배트맨','원더우먼','아쿠아맨','조커']})
db.myfriends.find()
db.myfriends.update({name: '아이언맨'}, {$push: {buddy: {$each: ['캡틴아메리카', '블랙위도우']}}})
db.myfriends.find()
db.myfriends.updateOne({name:'슈퍼맨'}, {$pop:{buddy:1}})
db.myfriends.find()
728x90
'NoSQL > MongoDB' 카테고리의 다른 글
[MongoDB] 몽고디비 데이터 수정(update), 삭제(delete) (0) | 2022.04.20 |
---|---|
[MongoDB] 몽고디비 함수 sort(), limit(), skip() (0) | 2022.04.19 |
[MongoDB] 몽고디비 데이터 삽입(insert)하고 해당 데이터 찾기(find) (0) | 2022.04.18 |
[MongoDB] 몽고디비(MongoDB) 설치하기 (0) | 2022.04.17 |