Bagaimana untuk Membina Penapis Pertanyaan Bersarang ATAU/Dan dalam pemacu mongo-go?

Patricia Arquette
Lepaskan: 2024-11-17 19:23:01
asal
292 orang telah melayarinya

How to Construct Nested OR/AND Query Filters in the mongo-go-driver?

Penapis Pertanyaan OR/AND Bersarang dalam pemandu 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}}}}}
}
Salin selepas log masuk

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}},
    }},
}
Salin selepas log masuk

Sebagai alternatif, anda boleh menggunakan sintaks mudah berikut:

filter := bson.M{
    "p": 10,
    "$or": bson.A{
        bson.M{"s": 30},
        bson.M{"a": 10},
    },
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan