로컬에서 MongoDB를 쓸수도 있지만 클라우드와 연결하여 쓸 수 있다.
from pymongo import MongoClient
MONGODB_PASSWORD='password'
MONGODB_USERNAME='username'
MONGO_URI=f"mongodb+srv://{MONGODB_USERNAME}:{MONGODB_PASSWORD}@c~~~~my_cloud_URI~~~~"
mongo = MongoClient(MONGO_URI)
""" insert_one
db라는 데이터베이스의 collections라는 collection에 Document를 추가한다
이때 collection이 존재하면 그곳에 추가하고, 없으면 collections라는
이름으로 만들어진다."""
mongo.db.collections.insert_one({"name": "song", "age": 22})
"""insert_many
여러개의 데이터를 입력한다. 그외의 사항은 위와 동일"""
user1 = {"name": "song", "age": 22}
user2 = {"name": "kim", "age": 33}
user3 = {"name": "lee", "age": 44}
mongo.db.collections.insert_many([user1, user2, user3])
"""find_one
조건에 해당하는 가장 먼저 검색되는 하나의 데이터만 찾을 때"""
target = mongo.db.collections.find_one({"name": "song"})
# 만약 조건이 없다면 맨 앞의 데이터
"""find
조건에 해당하는 모든 데이터를 조회"""
target = mongo.db.collections.find({"age": {"$gte": 22}})
for user in target:
print(user)
# 반복문이나 target[0]같이 인덱싱을 사용할 수 있다
"""update_one
하나만 수정할 때. 찾기위한 조건과 바꿀 값을 넣어준다"""
mongo.db.collections.update_one({"name": "lee"}, {"$set" : {"age": 19}})
"""update_many
여러개의 데이터를 한 번에 수정"""
mongo.db.collections.update_many({"age": {"$lt": 22}, {"$set": {"occupation": None}})
# 만약 없던 필드라면 추가된다
"""delete_one
하나만 삭제"""
mongo.db.collections.delete_one({"name": "song"})
"""delete_many
여러개 삭제"""
mongo.db.collections.delete_many({"occupation": None})
"""collection 삭제"""
mongo.db.collections.drop()
Update 부분에서 $lt, $set
등을 사용했는데, 이것들이 무엇인지 알아보자
$lt
: 미만
$lte
: 이하
$gt
: 초과
$gte
: 이상
in
은 특정 키 값이 해당되는 경우를 말한다
db.collection.find({'occupation': {"$in" : ['actor', 'developer']}})
이렇게 쓰면 actor이거나 developer인 경우를 조회한다.
nin
은 반대로 작동 (not in)
not
은 말그대로 아닌 것들
db.collection.find({'occupation': {"$not" : ['actor', 'developer']}})
actor나 developer가 아닌 모든 것을 조회
정규표현식도 사용할 수 있다.
db.collectiond.find({"first" : /(ma|to)/})
이 쿼리는 "first"가 ma로 시작하거나, to로 시작하는 것들을 조회한다.
db.collections.find({"first": {$regex: /(ma)/}})
이렇게 하면 ma가 포함된 모든 결과를 조회