본문 바로가기

개발

Mongodb에서 특정한 문자열 검색해서 결과물 리턴하기

find나 find_one에서 어떻게 특정 문자열을 contain한 결과물을 가져올까? 했는데 정규식을 사용하면 된다.

import re

text='주식캔 연어왈 연어좋아'
title = '좋아'

p = re.compile(f'.*{title}.*')
m = p.match(text)
m.group()
>>> 주식캔 연어왈 연어좋아

title이라는 변수가 포함되면 text를 반환하는 정규식 코드다.

 

food_col = db.collection # pymongo 사용

def searchbytitle(title):
    foodlist = []
    findfood = food_col.find({"title":{'$regex':f'.*{title}.*'}})
    for f in findfood:
        foodlist.append(f)
    return foodlist

이렇게 하면 title이라는 변수에 해당하는 문자열이 포함되는 항목들을 리스트에 넣어 반환해 준다.

다만 "보레알 연어맛 져키 프리미엄" 같은 항목이 있을 때,

"보레알 프리미엄" 으로 검색하면 결과가 안 나온다.

"보레알 연어맛" "져키 프리미엄" 등으로 검색하면 리턴된다.

이 부분은 해결하면 추가하겠음!