PyMongo를 사용하여 regex 쿼리 수행
PyMongo를 사용하여 MongoDB 서버에 regex 쿼리를 실행하려고 합니다.문서 구조는 다음과 같습니다.
{
"files": [
"File 1",
"File 2",
"File 3",
"File 4"
],
"rootFolder": "/Location/Of/Files"
}
*파일 패턴에 맞는 파일을 모두 입수하고 싶습니다.이렇게 하려고 했는데
db.collectionName.find({'files':'/^File/'})
하지만 난 아무것도 돌려받지 못했어MongoDB 문서에 따르면 이것이 가능하기 때문에 제가 놓친 것이 있습니까?Mongo 콘솔에서 쿼리를 실행하면 정상적으로 동작합니다.API가 지원되지 않는 건가요?아니면 제가 잘못 사용하고 있는 건가요?
정규 표현 옵션(대소문자 무시 등)을 포함할 경우 다음을 수행합니다.
import re
regx = re.compile("^foo", re.IGNORECASE)
db.users.find_one({"files": regx})
regex 검색은 pymongo에서 조금 다르게 수행되지만 마찬가지로 쉽습니다.
정규식은 다음과 같이 수행됩니다.
db.collectionname.find({'files':{'$regex':'^File'}})
파일 속성이 있는 모든 문서와 일치하며 파일 안에 파일로 시작하는 항목이 있습니다.
이중 컴파일을 피하기 위해 PyMongo와 함께 제공되는 bson regex 래퍼를 사용할 수 있습니다.
>>> regx = bson.regex.Regex('^foo')
>>> db.users.find_one({"files": regx})
Regex는 컴파일을 시도하지 않고 문자열을 저장하기 때문에 find_one은 인수를 'Regex' 유형으로 검출하여 적절한 Mongo 쿼리를 형성할 수 있습니다.
이 방법은 다른 상위 답변보다 약간 더 피토닉하다고 생각합니다. 예를 들어 다음과 같습니다.
>>> db.collectionname.find({'files':{'$regex':'^File'}})
몇 가지 경고가 있으므로 regex 쿼리를 사용할 계획이라면 bson Regex 문서를 읽어보는 것이 좋습니다.
해결 방법re
인덱스를 전혀 사용하지 않습니다.다음과 같은 명령을 사용해야 합니다.
db.collectionname.find({'files':{'$regex':'^File'}})
(아래에 코멘트를 드릴 수 없기 때문에, 이쪽에서 회신합니다.)
언급URL : https://stackoverflow.com/questions/3483318/performing-regex-queries-with-pymongo
'source' 카테고리의 다른 글
get_module은 플러그인에서 "구체 분류법"을 제공합니다. (0) | 2023.03.15 |
---|---|
@Scope("protype") bean 스코프가 새로운 bean을 생성하지 않음 (0) | 2023.03.15 |
현재 날짜가 두 날짜 사이의 Oracle SQL인지 확인합니다. (0) | 2023.03.15 |
Angular.js에서 AJAX 콜을 발신하기 위한 베스트 프랙티스는 무엇입니까? (0) | 2023.03.15 |
Yoast SEO 플러그인에 의해 추가된 rel canical을 제거하는 중 (0) | 2023.03.15 |