Heim >Backend-Entwicklung >Golang >Wie konstruiere ich verschachtelte ODER/AND-Abfragefilter im Mongo-Go-Treiber?
In MongoDB können komplexe Abfragefilter verschachtelte logische Operatoren wie OR und AND beinhalten. Mit dem Mongo-Go-Treiber können Sie diese Filter programmgesteuert erstellen.
Bei der Verwendung verschachtelter logischer Operatoren ist es wichtig, die vom Treiber benötigte Struktur zu verstehen. Der $or-Operator erfordert beispielsweise ein Array von Bedingungen, dargestellt als bson.A. Der $and-Operator hingegen ist die Standardeinstellung und muss nicht explizit angegeben werden.
Betrachten Sie das folgende Beispiel, in dem Sie einen Filter mit einer ODER-Bedingung erstellen möchten, die in einer UND-Bedingung verschachtelt ist:
filter := bson.M{ "p": 10, "$and": bson.D{{"s", 30}, bson.M{"$or": bson.D{{"a", 1}}}}} }
Dieser Code führt zu einem Fehler, weil er versucht, bson.M mit bson.D innerhalb einer UND-Bedingung zu mischen. Um dies zu beheben, müssen Sie bson.A für die $or-Bedingung verwenden und den unnötigen $and-Operator entfernen:
filter := bson.D{ {"p", 10}, {"$or", bson.A{ bson.D{{"s", 30}}, bson.D{{"a", 1}}, }}, }
Alternativ können Sie die folgende vereinfachte Syntax verwenden:
filter := bson.M{ "p": 10, "$or": bson.A{ bson.M{"s": 30}, bson.M{"a": 10}, }, }
Diese Syntax erstellt den gleichen Abfragefilter wie die vorherigen Beispiele. Die Wahl der Syntax hängt von Ihren Vorlieben und der Komplexität Ihrer Abfrage ab.
Das obige ist der detaillierte Inhalt vonWie konstruiere ich verschachtelte ODER/AND-Abfragefilter im Mongo-Go-Treiber?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!