Heim >Backend-Entwicklung >Golang >Wie konstruiere ich verschachtelte ODER/AND-Abfragen mit dem MongoDB Go-Treiber?

Wie konstruiere ich verschachtelte ODER/AND-Abfragen mit dem MongoDB Go-Treiber?

Susan Sarandon
Susan SarandonOriginal
2024-12-01 15:33:11213Durchsuche

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

Verschachtelte logische Abfragen mit MongoDB Go-Treiber

MongoDB-Abfragen erfordern häufig die Verwendung verschachtelter logischer Operatoren (AND/OR), um Dokumente basierend zu filtern nach mehreren Kriterien. Im Go MongoDB-Treiber können verschachtelte logische Abfragen mithilfe der Typen bson.D und bson.M erstellt werden.

Verschachtelte ODER/AND-Abfragen erstellen

Um eine zu erstellen Bei einer verschachtelten OR/AND-Abfrage müssen Sie den Typ bson.D verwenden, um den äußeren logischen Operator (z. B. $and) darzustellen und ihm bson.E-Elemente zu übergeben. Jedes bson.E-Element stellt ein Feld-Wert-Paar dar, wobei der Feldname der logische Operator sein kann (z. B. $or) und der Wert ein bson.D oder ein bson.A (für Arrays) sein kann.

Beispiel für eine verschachtelte ODER/AND-Abfrage

Betrachten Sie die MongoDB Abfrage:

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

Um diese Abfrage in Go mit dem MongoDB-Treiber darzustellen, können Sie den folgenden Code verwenden:

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

In diesem Beispiel stellt bson.D das äußere $ dar und-Operator, und bson.A stellt den verschachtelten $or-Operator dar. Jedes bson.D innerhalb von $or stellt eine Unterabfrage dar.

Verwenden von bson.M für verschachtelte Abfragen

Sie können zur Darstellung auch den Typ bson.M verwenden verschachtelte Abfragen. bson.M ist eine Map[string]interface{}, die Feldnamen und die entsprechenden Werte enthalten kann. Der Wert kann eine andere bson.M-Instanz sein, die eine verschachtelte Abfrage darstellt.

Zum Beispiel kann die obige Abfrage mit bson.M wie folgt dargestellt werden:

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

Empfehlungen

  • Um ein Array innerhalb eines logischen Operators darzustellen, verwenden Sie bson.A (z. B. bson.A{bson.M{"foo": 1}}).
  • $and ist der standardmäßige logische Operator, daher ist es nicht notwendig, ihn explizit in die Abfrage einzubeziehen.

Wenn Sie diese Richtlinien befolgen, können Sie mithilfe des MongoDB-Treibers effizient verschachtelte ODER/AND-Abfragen in Go erstellen.

Das obige ist der detaillierte Inhalt vonWie konstruiere ich verschachtelte ODER/AND-Abfragen mit dem MongoDB Go-Treiber?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn