Maison > développement back-end > Golang > Comment construire des filtres de requêtes OR/AND imbriqués dans le pilote mongo-go-driver ?

Comment construire des filtres de requêtes OR/AND imbriqués dans le pilote mongo-go-driver ?

Patricia Arquette
Libérer: 2024-11-17 19:23:01
original
325 Les gens l'ont consulté

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

Filtre de requête OR/AND imbriqué dans mongo-go-driver

Dans MongoDB, les filtres de requêtes complexes peuvent impliquer des opérateurs logiques imbriqués tels que OR et AND. Le mongo-go-driver vous permet de construire ces filtres par programme.

Lors de l'utilisation d'opérateurs logiques imbriqués, il est essentiel de comprendre la structure requise par le pilote. Par exemple, l'opérateur $or nécessite un tableau de conditions, représenté par bson.A. L'opérateur $and, en revanche, est la valeur par défaut et n'a pas besoin d'être explicitement spécifié.

Considérez l'exemple suivant dans lequel vous souhaitez créer un filtre avec une condition OR imbriquée dans une condition AND :

filter := bson.M{
    "p": 10,
    "$and": bson.D{{"s", 30}, bson.M{"$or": bson.D{{"a", 1}}}}}
}
Copier après la connexion

Ce code génère une erreur car il tente de mélanger bson.M avec bson.D dans une condition AND. Pour résoudre ce problème, vous devez utiliser bson.A pour la condition $or et supprimer l'opérateur $and inutile :

filter := bson.D{
    {"p", 10},
    {"$or", bson.A{
        bson.D{{"s", 30}},
        bson.D{{"a", 1}},
    }},
}
Copier après la connexion

Vous pouvez également utiliser la syntaxe simplifiée suivante :

filter := bson.M{
    "p": 10,
    "$or": bson.A{
        bson.M{"s": 30},
        bson.M{"a": 10},
    },
}
Copier après la connexion

Cette syntaxe crée le même filtre de requête que les exemples précédents. Le choix de la syntaxe dépend de vos préférences et de la complexité de votre requête.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal