Go 中的MongoDB 巢狀OR/AND 查詢過濾器
MongoDB Go 驅動程式可讓您使用$or 和$ 建立複雜的查詢過濾器和運營商。但是,如果您需要在這些頂級運算符中建立嵌套運算符,則由於驅動程式使用 bson.D 和 bson.E 元素,該過程可能會有點混亂。
以下範例示範如何建立巢狀OR/AND 查詢篩選器:
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) } }
在此範例:
需要注意的是,$and 運算子是預設的,因此您不必明確指定它。但是,如果您想在 $and 中嵌套其他運算符,則需要使用 bson.A 切片來表示條件陣列。
以上是如何使用 Go 驅動程式在 MongoDB 中建立巢狀 OR/AND 查詢篩選器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!