Pymongo

gnlenfn·2021년 9월 4일
0

pymongo를 이용한 Mongodb 사용법

1. Mongo Atlas 연결하기

로컬에서 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)

2. CRUD

1. Create

""" 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])

2. Read

"""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

"""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

"""delete_one
하나만 삭제"""
mongo.db.collections.delete_one({"name": "song"})

"""delete_many
여러개 삭제"""
mongo.db.collections.delete_many({"occupation": None})

"""collection 삭제"""
mongo.db.collections.drop()

3. 쿼리 옵션

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가 포함된 모든 결과를 조회

0개의 댓글