Heim >Backend-Entwicklung >Golang >Warum gibt meine Regex-Abfrage für den MongoDB Go-Treiber keine Ergebnisse zurück?

Warum gibt meine Regex-Abfrage für den MongoDB Go-Treiber keine Ergebnisse zurück?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 21:35:02939Durchsuche

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

Regex-Abfragen in MongoDB mit dem Go-Treiber

MongoDB bietet einen leistungsstarken Abfragemechanismus, mit dem Sie Dokumente basierend auf verschiedenen Kriterien abrufen können. Eines dieser Kriterien sind reguläre Ausdrücke, die häufig für Mustervergleiche und Teilzeichenfolgensuchen verwendet werden.

Problem aufgetreten:

Beim Versuch, den MongoDB Go-Treiber für die Ausführung zu verwenden Bei einer Abfrage mit regulären Ausdrücken ist ein Benutzer auf ein Problem gestoßen, bei dem die erwarteten Ergebnisse nicht zurückgegeben wurden. Trotz Befolgung der Beispiele in der Dokumentation blieb der Cursor leer.

Grundursache:

Die Grundursache dieses Problems liegt in der Konstruktion der primitiven.Regex-Struktur. Das Musterfeld dieser Struktur erwartet ein reguläres Ausdrucksmuster ohne führende und abschließende Schrägstriche.

Lösung:

Um dieses Problem zu beheben, entfernen Sie die Schrägstriche, die das reguläre Ausdrucksmuster umgeben in der primitive.Regex-Struktur. Hier ist der korrigierte Code:

<code class="go">filter := bson.D{{"text", primitive.Regex{Pattern: "he", Options: ""}}}</code>

Beispiel:

Mit diesem korrigierten Code sollte die folgende Abfrage nun die erwarteten Ergebnisse zurückgeben:

<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>

Durch das Entfernen der Schrägstriche rund um das reguläre Ausdrucksmuster kann die primitive.Regex-Struktur jetzt korrekt mit der gewünschten Teilzeichenfolge im Feld „Text“ der Dokumente übereinstimmen und die erwarteten Ergebnisse zurückgeben.

Das obige ist der detaillierte Inhalt vonWarum gibt meine Regex-Abfrage für den MongoDB Go-Treiber keine Ergebnisse zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn