Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mencipta Penapis Pertanyaan Bersarang ATAU/Dan dalam MongoDB dengan Pemacu Go?
Penapis Pertanyaan MongoDB Nested OR/AND dalam Go
Pemacu MongoDB Go membolehkan anda mencipta penapis pertanyaan kompleks menggunakan $or dan $ dan pengendali. Walau bagaimanapun, jika anda perlu mencipta pengendali bersarang dalam pengendali peringkat atas ini, prosesnya boleh menjadi agak mengelirukan kerana pemacu menggunakan elemen bson.D dan bson.E.
Contoh berikut menunjukkan cara untuk buat penapis pertanyaan OR/AND bersarang:
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) } }
Dalam contoh ini:
Adalah penting untuk ambil perhatian bahawa operator $and ialah lalai, jadi anda tidak perlu secara eksplisit nyatakannya. Walau bagaimanapun, jika anda ingin menyarangkan operator lain dalam $and, anda perlu menggunakan kepingan bson.A untuk mewakili susunan keadaan.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Penapis Pertanyaan Bersarang ATAU/Dan dalam MongoDB dengan Pemacu Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!