1. pymongo 활용하여 몽고DB와 연결하기
from pymongo import MongoClient
client = MongoClient(host='localhost', port=27017)
db = client['test1'] #test1=DB명
res = db.Restaurants #Restaurants=Collection명
2. 탐색 시 조건 설정 및 결과 확인하기
sql의 where 문에 해당한다고 보면 될 것 같다.
insert했던 데이터에 맞게 find로 원하는 조건에 맞춰 여러 쿼리를 적어봤다.
pprint로 예쁘게 확인한다.
import pprint
pprint.pprint(res.find_one({'Tag':'아동급식카드'}))
pprint.pprint(res.find_one({'FoodType':'한식'}))
pprint.pprint(res.find_one({'Location': { '$regex': '서초'}}))
pprint.pprint(res.find_one({'Tag':'아동급식카드','FoodType': '한식','Location': { '$regex': '강남' }}))
3. 데이터 랜덤 조회하기
먼저 원하는 조건이 있다면 match로 넣어주면 된다.
sample size에 원하는 랜덤 데이터 수를 넣으면 된다.
나는 다섯 가지 데이터를 확인하고 싶으므로 5로 설정했다.
반복문으로 확인한다.
random=res.aggregate([
{ "$match": { 'Tag':'아동급식카드' } },
{ "$sample": { "size": 5 } }
])
for x in random:
print(x)
4. value 추출
반환되는 데이터의 value로 새로운 응답문을 만들 것이므로,
각각의 변수에 넣어주기 위하여 get으로 값을 추출한다.
# 조건에 해당하는 데이터 하나 확인
find=res.find_one({'Tag':'채식','FoodType': '한식','Location': { '$regex': '강남' }})
# 딕셔너리 value 추출
Tag=find.get('Tag')
FoodType=find.get('FoodType')
Location=find.get('Location')
Name=find.get('Name')
Phone=find.get('Phone')
print(Tag,FoodType,Location,Name,Phone)
find_one으로 하나의 데이터만 가져와서 각각의 변수에 value를 넣었다.
만약 여러 데이터라면 배열에 차례차례 넣어주면 될 것이다.
전체 코드
from pymongo import MongoClient
client = MongoClient(host='localhost', port=27017)
db = client['test1'] #test1=DB명
res = db.Restaurants #Restaurants=Collection명
#탐색시 조건 설정 및 결과 확인하기
# import pprint
# pprint.pprint(res.find_one({'Tag':'아동급식카드'}))
# pprint.pprint(res.find_one({'FoodType':'한식'}))
# pprint.pprint(res.find_one({'Location': { '$regex': '서초'}}))
# pprint.pprint(res.find_one({'Tag':'아동급식카드','FoodType': '한식','Location': { '$regex': '강남' }}))
#아동급식카드 식당 다섯 개 랜덤으로
random=res.aggregate([
{ "$match": { 'Tag':'아동급식카드' } },
{ "$sample": { "size": 5 } }
])
for x in random:
print(x)
# 조건에 해당하는 데이터 하나 확인
find=res.find_one({'Tag':'채식','FoodType': '한식','Location': { '$regex': '강남' }})
# 딕셔너리 value 추출
Tag=find.get('Tag')
FoodType=find.get('FoodType')
Location=find.get('Location')
Name=find.get('Name')
Phone=find.get('Phone')
print(Tag,FoodType,Location,Name,Phone)
# 조건에 해당하는 데이터 모두 탐색
# searched=res.find({'Tag':'채식','FoodType': '한식','Location': { '$regex': '강남' }})
# for x in searched:
# print(x)
'정보' 카테고리의 다른 글
Ubuntu 환경 mecab 설치하기 (0) | 2023.01.06 |
---|---|
BeautifulSoup로 이미지 저장하기 (0) | 2022.09.24 |
MongoDB CSV, JSON파일 import하기/파일깨짐현상 (0) | 2022.09.04 |
몽고DB 설치하기/mongo.exe 파일 없음 해결(6.0버전) (0) | 2022.09.04 |
Dialogflow와 카카오톡 챗봇 연동(구름 IDE,챗봇 스킬) (0) | 2022.08.16 |
댓글