
...
Not Only SQL, SQL이 아니다라는 의미만을 지니며 SQL을 사용하는 관계형 데이터베이스가 아닌 데이터베이스를 의미한다. 대표적인 NO-SQL로 mongoDB, Redis 등이 있다.
mongoDB는 Documenet 기반 데이터베이스이다. Database > Collection > Document > Field 계층으로 이루어져 있으며 Documenet는 RDBMS의 Row에 해당한다. 계층은 RDBMS와 유사하다.
mongoDB Atlas란, mongoDB를 설계한 사람들이 만든 모든 것을 관리하는 클라우드 데이터베이스 클라우드 데이터베이스
pip install pymongo
pip install dnspython
from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.[Database이름]
나는 github에 코드파일을 올리기 때문에 .env파일을 통해 환경 변수를 관리하고자 하였다.
pip install python-dotenv
DB_ID=
DB_PASSWORD=
DB_NAME=
load_dotenv()
os.environ['변수명']
os.getenv('변수명')
from dotenv import load_dotenv
import os
from pymongo import MongoClient
import certifi
load_dotenv()
ID = os.environ['DB_ID']
PASSWORD = os.getenv('DB_PASSWORD')
DB_NAME = os.getenv('DB_NAME')
// db 연결 url
string = f"mongodb+srv://{ID}:{PASSWORD}@비밀이야.mongodb.net/{DB_NAME}?retryWrites=true&w=majority"
client = MongoClient(string, tlsCAFile=certifi.where())
db = client.spart
// 연결 확인 예제
doc = {
'name':'bob',
'age':27
}
db.users.insert_one(doc)
pymongo로 mongo DB 조작하기
# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})
# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))
# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
# 지우기 - 예시
db.users.delete_one({'name':'bobby'})
| 3주차 완료! |
|---|
![]() |
Java + Springboot + Mybatis(Sql Mapper)를 사용하여 프로젝트를 하다가 pymongo사용하여 간단한 crud를 해보니 확실히 직관적이고 편하다라는 걸 다시 한번 느낄 수 있었다.
🤔 앞으로 본격적인 향해99 커리큘럼을 들어가면 주특기라고해서 백엔드는 node.js와 spring 사이에서 선택하여 진행하게 되는데.. 아직도 너무 고민이다.
코딩은 점점 쉽게 구현하는 추세로 가고 있으나 한국은 java, spring이 꽉잡고 있고.. 이번 주차의 강의를 듣기전에는 spring으로 마음이 기울었었다. '차라리 어려운 걸 지금 배우고 가자!'와 '다시한번 직전의 자바와 스프링부트를 사용했던 프로젝트의 코드들을 돌아볼 수 있는 계기가 되었음 하는 마음'. 이 두가지 이유에서 였는데, 이번 주차의 강의를 들으면서 다시 고민을 하게 되었다..🫠 똑같은 구현을 한다하면 더욱 쉬운길이 있는데 spring을 선택하면 굳이 돌아가는 기분을 받아서 일까..?😵 참.. 개발자 직군을 목표로 잡고나서부터는 항상 선택이 가장 힘들다..! 그래도 꾸준히 뭐든 하면 실력은 는다는 것! 홧팅❗️