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!