파이썬으로 데이터베이스 처리를 위해 pymysql을 사용해 MySQL 쿼리는 자주 다뤘지만 pymongo를 이용한 MongoDB 쿼리는 많이 다뤄보지 못했다. pymongo 쿼리문은 pipeline으로 만들어 실행하는 것이 깔끔하게 작성하고 실행할 수 있다 생각들었다. 작성하고보니 pipeline은 단 3줄 밖에 안되지만 레퍼런스가 적다고 느꼈고 익숙하지 않아 조금의 시간이 소요됐다. 추후에도 많이 사용할 코드 스니펫일 것 같아 기록.
import os
from pymongo import MongoClient
from operator import itemgetter
client = MongoClient(host=os.environ.get('MONGO_HOST'),
port=int(os.environ.get('MONGO_PORT')),
username=os.environ.get('MONGO_USERNAME'),
password=os.environ.get('MONGO_PASSWORD'))
db = client[os.environ.get('MONGO_DB')]
collection = db['name']
pipeline = []
pipeline.append({'$match': {'col1': val1, 'col2': {'$gte', 1682899200}}})
pipeline.append({'$project': {'_id': True, 'col1': True, 'col2': True, 'col3': True}})
pipeline.append({'$limit': 100000})
unsorted_docs = collection.aggregate(pipeline)
unsorted_documents = []
unsorted_documents.extend(unsorted_docs)
documents = sorted(unsorted_documents, key=itemgetter('event_time'))
for document in documents:
...
'Computer Science > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 프로그래머스 SQL 고득점 Kit 답안 (1) | 2022.10.25 |
---|