Maison >développement back-end >Golang >Comment construire des requêtes OR/AND imbriquées avec le pilote MongoDB Go ?

Comment construire des requêtes OR/AND imbriquées avec le pilote MongoDB Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-01 15:33:11207parcourir

How to Construct Nested OR/AND Queries with the MongoDB Go Driver?

Requêtes logiques imbriquées avec le pilote MongoDB Go

Les requêtes MongoDB nécessitent souvent l'utilisation d'opérateurs logiques imbriqués (AND/OR) pour filtrer les documents en fonction sur plusieurs critères. Dans le pilote Go MongoDB, des requêtes logiques imbriquées peuvent être construites à l'aide des types bson.D et bson.M.

Construction de requêtes OR/AND imbriquées

Pour créer un requête OR/AND imbriquée, vous devez utiliser le type bson.D pour représenter l'opérateur logique externe (par exemple, $and) et transmettre les éléments bson.E dans il. Chaque élément bson.E représente une paire champ-valeur, où le nom du champ peut être l'opérateur logique (par exemple, $or) et la valeur peut être un bson.D ou un bson.A (pour les tableaux).

Exemple de requête OR/AND imbriquée

Considérez MongoDB requête :

{
  "$and": {
    "p": 10,
    "$or": {
      "s": 30,
      "a": 1
    }
  }
}

Pour représenter cette requête dans Go à l'aide du pilote MongoDB, vous pouvez utiliser le code suivant :

filter := bson.D{
    {"p", 10},
    {"$or", bson.A{
        bson.D{{"s", 30}},
        bson.D{{"a", 1}},
    }},
}

Dans cet exemple, le bson.D représente le $ externe et l'opérateur, et le bson.A représente l'opérateur $or imbriqué. Chaque bson.D dans $or représente une sous-requête.

Utilisation de bson.M pour les requêtes imbriquées

Vous pouvez également utiliser le type bson.M pour représenter requêtes imbriquées. bson.M est une map[string]interface{} qui peut contenir des noms de champs et leurs valeurs correspondantes. La valeur peut être une autre instance de bson.M, représentant une requête imbriquée.

Par exemple, la requête ci-dessus peut être représentée à l'aide de bson.M comme suit :

filter := bson.M{
    "p": 10,
    "$or": bson.A{
        bson.M{"s": 30},
        bson.M{"a": 1},
    },
}

Recommandations

  • Pour représenter un tableau au sein d'un opérateur logique, utilisez bson.A (par exemple, bson.A{bson.M{"foo": 1}}).
  • $and est l'opérateur logique par défaut, il n'est donc pas nécessaire de l'inclure explicitement dans la requête.

En suivant ces directives, vous pouvez créer efficacement des requêtes OR/AND imbriquées dans Go à l'aide du pilote MongoDB.

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