> 백엔드 개발 > Golang > MongoDB Go Driver 정규식 쿼리가 결과를 반환하지 않는 이유는 무엇입니까?

MongoDB Go Driver 정규식 쿼리가 결과를 반환하지 않는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-02 21:35:02
원래의
890명이 탐색했습니다.

Why is my MongoDB Go Driver regex query not returning any results?

Go 드라이버를 사용하여 MongoDB의 정규식 쿼리

MongoDB는 다양한 기준에 따라 문서를 검색할 수 있는 강력한 쿼리 메커니즘을 제공합니다. 이러한 기준 중 하나는 패턴 일치 및 하위 문자열 검색에 자주 사용되는 정규 표현식입니다.

발생한 문제:

MongoDB Go 드라이버를 사용하여 수행하려고 할 때 정규식 쿼리를 수행하는 동안 예상한 결과가 반환되지 않는 문제가 사용자에게 발생했습니다. 문서의 예를 따랐음에도 불구하고 커서는 비어 있었습니다.

근본 원인:

이 문제의 근본 원인은 원시.Regex 구조체의 구성에 있습니다. 이 구조체의 패턴 필드에는 앞뒤 슬래시가 없는 정규식 패턴이 필요합니다.

해결책:

이 문제를 해결하려면 정규식 패턴 주변의 슬래시를 제거하세요. 원시적.Regex 구조체에서. 수정된 코드는 다음과 같습니다.

<code class="go">filter := bson.D{{"text", primitive.Regex{Pattern: "he", Options: ""}}}</code>
로그인 후 복사

예:

이 수정된 코드를 사용하면 이제 다음 쿼리가 예상한 결과를 반환해야 합니다.

<code class="go">ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

cur, err := coll.Find(ctx, filter)
if err != nil {
    fmt.Println(err)
    return
}

i := 0
for cur.Next(ctx) {
    i = i + 1
}
fmt.Println("Found", i, "elements")</code>
로그인 후 복사

정규식 패턴 주위의 슬래시를 제거함으로써 이제 원시.Regex 구조체는 문서의 "텍스트" 필드에서 원하는 하위 문자열과 정확하게 일치하고 예상한 결과를 반환할 수 있습니다.

위 내용은 MongoDB Go Driver 정규식 쿼리가 결과를 반환하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿