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!