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
Patricia Arquetteoriginal
2024-11-17 19:23:01351parcourir

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}}}}}
}

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}},
    }},
}

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},
    },
}

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!

Déclaration:
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