본문 바로가기
데이터베이스

4주차 3, 몽고DB 사용법

by 호놀롤루 2022. 1. 15.

 

몽고DB는 nosql db다.

일반 sql은 규칙이 있지만 몽고DB는 그런 게 없다.

그냥 json형태의 데이터(딕셔너리)로 저장되어 있으므로

일반 sql보다 저장이 용이하지만, 규칙이 없는 만큼

사용자가 조심하지 않으면 데이터의 신빙성이 줄어든다.

ex: 키 name을 nane이라 치면 nane이라는 키가 생긴다.

 

파이썬의 경우 pymongo패키지를 다운받으면 된다.

from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.디비 이름

이걸로 db에 접속할 준비는 다 된거다.

없는 db이름을 적으면 새로 생긴다.

 

db의 내용을 확인하고 싶으면 Robo 3T를 깔면 된다.

insert, find, update, delete

 

db에 데이터 저장

doc = {'name': 'red junpyo','age':60}
db.users.insert_one(doc)

여러 개를 저장하려면 for문을 돌리면 해결 될 일이다.

여기선 db.users를 썼지만, 다른 이름을 쓰면 콜렉션이 새로 생긴다.

 

db에서 데이터 한 개 찾기

user = db.users.find_one({'name':'red junpyo'})
print(user)

user에 json형태로 '_id'(고유 아이디), 'name', 'age'의 데이터가 넘어온다.

 

 

db에 있는 데이터 여러개 가져오기

same_ages = list(db.users.find({'age': 21},{'_id':False}))

same_ages 라는 리스트에 False가 되어있지 않는 매핑형 데이터들이 넘어온다.

{'_id':False, 'age':False} 이런 식으로 중괄호 안에 다 적어야 한다.

다 가져올 때는 find.({},{'_id':False}) 의 형태로 넣을 게 없어도 중괄호는 써줘야 한다.

 

 

db에 있는 데이터 수정

db.users.update_one({'name':'red junpyo'}, {'$set':{'age': 65}})

이러면 red junpyo의 age는 65로 바뀌지만 제일 먼저 나온 하나만 바뀐다.

 

 

db에 있는 데이터 삭제

db.users.delete_one({'name':'red junpyo'})

제일 먼저 나온 red junpyo가 하나 사라진다.

update나 delete로 써도 되지만, 예상치도 못한 데이터가 없어지거나 삭제되는 등

문제가 발생할 수 있기에 조심해서 써야 한다.

댓글