MongoDB-verschachtelter OR/AND-Abfragefilter in Go
Mit dem MongoDB Go-Treiber können Sie komplexe Abfragefilter mithilfe von $or und $ erstellen und Betreiber. Wenn Sie jedoch verschachtelte Operatoren innerhalb dieser Top-Level-Operatoren erstellen müssen, kann der Vorgang etwas verwirrend sein, da der Treiber die Elemente bson.D und bson.E verwendet.
Das folgende Beispiel zeigt, wie das geht Erstellen Sie einen verschachtelten OR/AND-Abfragefilter:
package main import ( "context" "fmt" "time" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" ) func main() { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017")) if err != nil { panic(err) } defer client.Disconnect(ctx) collection := client.Database("test").Collection("people") // Create a nested OR/AND query filter filter := bson.D{ { "$and", bson.A{ bson.D{{"age", 30}}, bson.D{{"$or", bson.A{ bson.D{{"name", "John"}}, bson.D{{"name", "Jane"}}, }}}, }, }, } // Find all people matching the filter cur, err := collection.Find(ctx, filter) if err != nil { panic(err) } defer cur.Close(ctx) // Iterate through the results and print each person's name for cur.Next(ctx) { var result bson.M if err := cur.Decode(&result); err != nil { panic(err) } fmt.Println(result["name"]) } if err := cur.Err(); err != nil { panic(err) } }
In diesem Beispiel:
Es ist wichtig zu beachten, dass der $and-Operator die Standardeinstellung ist, sodass Sie ihn nicht explizit angeben müssen. Wenn Sie jedoch andere Operatoren in $and verschachteln möchten, müssen Sie ein bson.A-Slice verwenden, um das Array von Bedingungen darzustellen.
Das obige ist der detaillierte Inhalt vonWie erstelle ich verschachtelte ODER/AND-Abfragefilter in MongoDB mit dem Go-Treiber?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!