首頁  >  文章  >  後端開發  >  為什麼我的 MongoDB Go Driver 正規表示式查詢沒有回傳任何結果?

為什麼我的 MongoDB Go Driver 正規表示式查詢沒有回傳任何結果?

Susan Sarandon
Susan Sarandon原創
2024-11-02 21:35:02792瀏覽

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

使用Go 驅動程式在MongoDB 中進行正規表示式查詢

MongoDB 提供了強大的查詢機制,讓您根據各種條件檢索文檔。其中一個標準是正規表示式,它通常用於模式匹配和子字串搜尋。

遇到的問題:

嘗試使用 MongoDB Go 驅動程式執行時在正規表示式查詢中,使用者遇到了未傳回預期結果的問題。儘管遵循了文檔的範例,遊標仍然為空。

根本原因:

此問題的根本原因在於primitive.Regex 結構的構造。此結構體的 Pattern 欄位需要一個不帶前導斜線和尾隨斜線的正規表示式模式。

解決方案:

要解決此問題,請刪除正規表示式模式周圍的斜線在 Primitive.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>

透過刪除正規表示式模式周圍的斜杠,primitive.Regex 結構現在可以正確匹配文件「文字」欄位中所需的子字串並傳回預期結果。

以上是為什麼我的 MongoDB Go Driver 正規表示式查詢沒有回傳任何結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn