본문 바로가기

Study/class note

하둡 / 몽고디비 DML문 작성하기(insert, update)

54 몽고디비에서 DML 문장 작성하기

mongodb가 앞에서 배운 hive와 scalar와 다른점은 DML문이 가능하다는 것.

hive와 scalar는 데이터 하나를 변경하려면 다시 처음부터 csv파일의 데이터를 vi편집기로 변경해서 수정한 후에 hive에 로드해서 다시 테이블을 구성해야 합니다.

 

1. insert문

sql>
insert into emp(empno,ename,sal)
 values(1111,'aaa',3000);
mongo>
db.emp.save({empno:1111,ename:"aaa",sal:3000})

db.emp.find()

 

2. update문

sql>
update emp
set sal = 9000
where ename = 'SCOTT';
mongo>
db.emp.update( {ename:'SCOTT'},{$set:{sal:9000}}, {multi:true} )

 

 

문제347. MARTIN의 직업을 ANALYST로 변경하시오.

mongo>
db.emp.update( {ename:'MARTIN'},{$set:{job:'ANALYST'}}, {multi:true} )

 

 

문제348. 직업이 SALESMAN인 사원들의 커미션을 8000으로 수정하시오.

db.emp.update( {job:'SALESMAN'},{$set:{comm:8000}}, {multi:true} )
db.emp.find()

 

 

3. delete문

db.emp.remove({deptno:30})
db.emp.find()

rollback이 따로 없음. 

 

 

문제349. emp테이블 drop하고 다시 생성하시오.

mongo>
db.emp.drop()
[root@centos ~]# mongoimport --type csv -c emp --headerline --drop /home/oracle/emp.csv
2022-03-30T13:55:43.986+0900    connected to: localhost
2022-03-30T13:55:43.987+0900    dropping: test.emp
2022-03-30T13:55:44.071+0900    imported 14 documents
mongo>
db.emp.find()

 

 

문제350. 부서번호가 30번이 아닌 사원들을 삭제하시오.

db.emp.remove({deptno:{$ne:30}})

 

 

+) 몽고디비에서 행 제한해서 출력하기

mongo>
db.airline.aggregate([ {$match:{depdelay:{$gt:0}} },
                     {$group:{_id:"$month", count:{$sum:1}}},
                       {$sort:{count:1} },
                       {$limit:5}])
                       
db.emp.find().limit(5)

 

 

문제351. 직업, 직업별 인원수를 출력하는데 맨 위에 2줄만 출력하시오.

db.emp.aggregate( {$group:{_id:"$job",count:{$sum:1}}},
                  {$limit:2} )

 

반응형