2016-11-25 3 views
1

MongoDB에서 $ in 명령에 regex를 사용하려고합니다. 그러나 그것은 문서에 따라 패턴 정규식 만 허용합니다. 나는이 함께 할 때

내가 문자열 목록과 같은 패턴을 사용해보십시오, 그것은이

collection.find({"categories": { "$in": [/^item1$/i,/^item2$/i,/^item3$/i] } }).count() 

이 왜

작동, 그러나

collection.find({"categories": { "$in": ["/^item1$/i","/^item2$/i","/^item3$/i"] } },{"_id":0}).count() 

실패? PyMongo를 사용 중이며 문자열 목록을 전달해야합니다. 어떻게해야합니까?

답변

0

PyMongo를 사용하면 re.compile()을 사용하여 각 객체의 각 패턴을 컴파일하여 정규 표현식 객체 목록을 만들어야합니다. here.하지만 매우 비효율적입니다.

대신 문자 클래스를 사용하여 정규 표현식을 작성해야합니다. demo

import re 

pat = re.compile(r'^item[1-3]$') 
collection.find({'categories': pat})