Wie erstelle ich verschachtelte ODER/AND-Abfragefilter in MongoDB mit dem Go-Treiber?

Barbara Streisand
Freigeben: 2024-11-26 22:15:11
Original
376 Leute haben es durchsucht

How to Create Nested OR/AND Query Filters in MongoDB with the Go Driver?

MongoDB-verschachtelter OR/AND-Abfragefilter in Go

Mit dem MongoDB Go-Treiber können Sie komplexe Abfragefilter mithilfe von $or und $ erstellen und Betreiber. Wenn Sie jedoch verschachtelte Operatoren innerhalb dieser Top-Level-Operatoren erstellen müssen, kann der Vorgang etwas verwirrend sein, da der Treiber die Elemente bson.D und bson.E verwendet.

Das folgende Beispiel zeigt, wie das geht Erstellen Sie einen verschachtelten OR/AND-Abfragefilter:

package main

import (
    "context"
    "fmt"
    "time"

    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/mongo"
)

func main() {
    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
    defer cancel()

    client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"))
    if err != nil {
        panic(err)
    }
    defer client.Disconnect(ctx)

    collection := client.Database("test").Collection("people")

    // Create a nested OR/AND query filter
    filter := bson.D{
        {
            "$and", bson.A{
                bson.D{{"age", 30}},
                bson.D{{"$or", bson.A{
                    bson.D{{"name", "John"}},
                    bson.D{{"name", "Jane"}},
                }}},
            },
        },
    }

    // Find all people matching the filter
    cur, err := collection.Find(ctx, filter)
    if err != nil {
        panic(err)
    }
    defer cur.Close(ctx)

    // Iterate through the results and print each person's name
    for cur.Next(ctx) {
        var result bson.M
        if err := cur.Decode(&result); err != nil {
            panic(err)
        }
        fmt.Println(result["name"])
    }

    if err := cur.Err(); err != nil {
        panic(err)
    }
}
Nach dem Login kopieren

In diesem Beispiel:

  • Der $and-Operator der obersten Ebene wird durch ein bson.D-Slice dargestellt.
  • Der $or-Operator innerhalb des $and-Operators wird ebenfalls durch ein bson.D-Slice dargestellt.
  • Jede Bedingung im $or-Operator wird durch dargestellt ein bson.D-Element.

Es ist wichtig zu beachten, dass der $and-Operator die Standardeinstellung ist, sodass Sie ihn nicht explizit angeben müssen. Wenn Sie jedoch andere Operatoren in $and verschachteln möchten, müssen Sie ein bson.A-Slice verwenden, um das Array von Bedingungen darzustellen.

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage