mongoDB Atlas

박영준·2023년 5월 26일
0

DB

목록 보기
7/41

1. 정의

  • DB

    • DB 는 단순히 하나의 '프로그램'이다.
    • DB 에 데이터를 저장한다는 것은 단순히 엑셀에 데이터를 넣는 것과 비슷하다.
    • 그리고 이런 DB 를 개인 컴퓨터에 설치하고 사용할 수 있다.
  • 클라우드

    • DB 를 개인 컴퓨터가 아닌, 인터넷에 두고 사용하는 공간
    • mongoDB Atlas 도 클라우드의 일종

2. 사용법

mongoDB Atlas

1) 무료로 클러스터 생성

(1)

(2)

(3) DB 에 접속 준비 완료

2) mongoDB 와 연결

  • 내 컴퓨터에 있는 Python 에서 ⇌ 인터넷에 있는 mongoDB 로
    데이터를 보내기/받기

(1) 패키지 설치

  • mongoDB 를 조작하기 위해서는 pymongo, dnspython 패키지가 필요하다.
    • pip install pymongo
    • pip install dnspython

(2) URL 입력

from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')         # URL : mongoDB 의 주소
db = client.dbsparta

(3) 연결하기

③ 복사한 URL 붙여넣기

from pymongo import MongoClient
client = MongoClient('mongodb+srv://<username>:<password>@cluster0.ek1pqyw.mongodb.net/?retryWrites=true&w=majority')         # URL : mongoDB 의 주소
db = client.dbsparta

④ '1) 무료로 클러스터 생성 - (2)'에서 저장해둔 <username>:<password> 입력

from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.ek1pqyw.mongodb.net/?retryWrites=true&w=majority')         # URL : mongoDB 의 주소
db = client.dbsparta
  • 현재는 라이브러리만 부른 상태

3) 데이터 입력/저장/확인

from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.ek1pqyw.mongodb.net/?retryWrites=true&w=majority')         # URL : mongoDB 의 주소
db = client.dbsparta

# 데이터 입력
doc = {
    'name':'영수',
    'age':24
}

# 데이터 저장 : 입력된 데이터 doc 를 db 에 저장한다
db.users.insert_one(doc)
  • 현재 상태에서 python 을 실행해도 실행 결과가 출력되지 않음
    → 대신 db에 저장됨

  • insert_one()

  • 하나의 데이터가 들어온 것을 확인 할 수 있다.

  • users는 dbsparta 안에 있는 colleciton

하나가 아닌, 다수의 데이터를 입력 및 저장하는 방법

# 여러개의 데이터를 입력 및 저장 하는 방법 1 : insert_one
doc = {
    'name':'가가',
    'age':22
    }
db.users.insert_one(doc)

doc = {
    'name':'나나',
    'age':23
    }
db.users.insert_one(doc)


# 여러개의 데이터를 입력 및 저장 하는 방법 2 : insert_many
mylist = [
    {'name':'박가가', 'age':'20'},
    {'name': '김나나', 'age':'21'}
]
db.users.insert_many(mylist)

4) 데이터 가져오기

① 모든 데이터 가져오기

# 모든 데이터 가져오기
    # 첫 번째 {} : find 할 조건 -> 모든 데이터를 가져오므로 공백
    # 두 번째 {} : 제외할 조건 -> _id: 로 나오는 부분을 출력되지 않게 한다
all_users = list(db.users.find({},{'_id':False}))

for a in all_users:
    print(a['name'])

② 하나의 데이터만 가져오기

# 하나의 데이터만 가져오기
 user = db.users.find_one({'name':'bobby'})

print(user)

5) 데이터 수정, 변경

# 'name':'영수' 인 데이터 -> 'age':19 로 수정해라
db.users.update_one({'name':'영수'},{'$set':{'age':19}})

6) 데이터 삭제

db.users.delete_one({'name':'영수'})

7) 웹스크래핑한 것을 db에 저장

# mongoDB 와 연결
from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.ek1pqyw.mongodb.net/?retryWrites=true&w=majority')         # URL : mongoDB 의 주소
db = client.dbsparta

import requests
from bs4 import BeautifulSoup

URL = "https://movie.daum.net/ranking/reservation"
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get(URL, headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')

lis = soup.select('#mainContent > div > div.box_ranking > ol > li')

for li in lis:
    rank = li.select_one('.rank_num').text
    title = li.select_one('.link_txt').text.strip("\n")
    rate = li.select_one('.txt_grade').text
    doc = {
			'title': title,
            'rank': rank,
            'rate': rate
        }
    db.movies.insert_one(doc)       # 'movies' 라는 새로운 collection 으로 입력시킴

3. 예시

'가버나움'(영화 제목)의 평점과 같은 평점의 영화 제목들을 가져오기

# mongoDB 와 연결
from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.ek1pqyw.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta

movie = db.movies.find_one({'title':'가버나움'})		# 1. 'title':'가버나움' 인 데이터를 하나 찾아, movie 변수에 담는다
target_star = movie['star']		# 2. movie 변수에서 star 키값의 데이터를 star 변수에 담는다

movies = list(db.movies.find({'star':target_star}))		# 3. moive 에서 'star':target_star 인 데이터를 모두 찾아 moives 변수에 담는다

for a in movies:
	print(a['title'])

참고: [Python] MongoDB Insert Document

profile
개발자로 거듭나기!

0개의 댓글