2021.12.17 - [Study/Flask] - [Flask] Flask에서 pymongo 사용하기!
[Flask] Flask에서 pymongo 사용하기!
현재 진행 중인 팀 프로젝트에서 서울의 여러 구에 있는 음식점이 저장되어 있는 csv 파일을 이용해서 이것을 서울의 5개의 권역으로 따로 묶어주기로 했다. [ 서북권, 도심권, 동북권, 서남권, 동
programmers-sosin.tistory.com
기존 pymongo에서 데이터를 뽑아 쓰는 와중에 검색 기능을 구현해야 할 일이 생겼다.
이때 검색기능을 구현할 때, 검색어를 받아 데이터 내부의 값과 비교시키니까 일치하는 경우에만 데이터가 나오는데 이때 검색어를 포함한 모든 것이 검색되게 만들고 싶어서 찾아보고, 그 결과를 작성해본다!
pymongo $regex 를 사용하여 문자열 포함 검색하기
search = request.form['search']
search_shop = collection.find(
{'$or': [{'자치구': {'$regex': search}},
{'업종': {'$regex': search}},
{'도로명주소': {'$regex': search}},
{'상호명': {'$regex': search}}]},
{'_id': False, 'index': False, '연번': False})
위 코드는 입력받은 검색어를 가져와 search에 저장한 후, 그 값을 mongodb 데이터 값과 비교시키는 것입니다.
이때 '$or' 은 직관적이게 or 연산자를 말하는 것으로 지정하는 조건에 하나라도 해당하면 데이터를 가져오는 것이다.
그리고 이때 검색 조건을 보면 {'$regex' : search} 부분이 있는데 이때 이 부분이 만약 search라는 값이 '자치구' 칼럼에 존재한다면 그것을 가져와라 라는 것이다.
중요한 것은 그냥 {'자치구' : search }로 했을 경우에는 완벽하게 일치하는 경우에만 데이터를 가져오지만
'$regex'를 추가하여 작성하면 search의 데이터를 포함하고 있는 경우 또한 모두 다 가져올 수 있기 때문에 검색어의 정확도는 떨어져도 검색 범위를 넓힐 수 있는 효과가 있다.
'Study > Python' 카테고리의 다른 글
[Python] Kakao API를 이용하여 주소를 이용해 위도, 경도 알아내기 (0) | 2021.12.30 |
---|---|
[Python] Kakao API를 이용하여 주소를 이용해 위도, 경도 알아내기 (0) | 2021.12.30 |
[Python] 크롤링과 스크래핑 ( crawling, scraping ) #2 [ BeutifulSoup : bs4 ] (0) | 2021.12.20 |
[Python] 크롤링과 스크래핑 ( crawling, scraping ) #1 [ requests] (0) | 2021.12.20 |
[Python] Openpyxl과 네이버 Geocoding을 이용한 위도경도 변환하기 (0) | 2021.12.16 |