Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Membina Penapis Pertanyaan Bersarang ATAU/Dan dalam pemacu mongo-go?
Dalam MongoDB, penapis pertanyaan kompleks boleh melibatkan pengendali logik bersarang seperti OR dan AND. Pemacu mongo-go membolehkan anda membina penapis ini secara pengaturcaraan.
Apabila menggunakan pengendali logik bersarang, adalah penting untuk memahami struktur yang diperlukan oleh pemandu. Sebagai contoh, operator $or memerlukan tatasusunan syarat, diwakili sebagai bson.A. Operator $and, sebaliknya, ialah lalai dan tidak perlu dinyatakan secara eksplisit.
Pertimbangkan contoh berikut di mana anda ingin mencipta penapis dengan keadaan ATAU bersarang dalam keadaan AND:
filter := bson.M{ "p": 10, "$and": bson.D{{"s", 30}, bson.M{"$or": bson.D{{"a", 1}}}}} }
Kod ini mengakibatkan ralat kerana ia cuba mencampurkan bson.M dengan bson.D dalam keadaan AND. Untuk membetulkannya, anda perlu menggunakan bson.A untuk keadaan $or dan alih keluar operator $and yang tidak diperlukan:
filter := bson.D{ {"p", 10}, {"$or", bson.A{ bson.D{{"s", 30}}, bson.D{{"a", 1}}, }}, }
Sebagai alternatif, anda boleh menggunakan sintaks mudah berikut:
filter := bson.M{ "p": 10, "$or": bson.A{ bson.M{"s": 30}, bson.M{"a": 10}, }, }
Sintaks ini mencipta penapis pertanyaan yang sama seperti contoh sebelumnya. Pilihan sintaks bergantung pada pilihan anda dan kerumitan pertanyaan anda.
Atas ialah kandungan terperinci Bagaimana untuk Membina Penapis Pertanyaan Bersarang ATAU/Dan dalam pemacu mongo-go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!