Go の MongoDB ネストされた OR/AND クエリ フィルター
MongoDB Go ドライバーを使用すると、$or と $ を使用して複雑なクエリ フィルターを作成できます。そしてオペレーター。ただし、これらのトップレベルの演算子内にネストされた演算子を作成する必要がある場合、ドライバーが bson.D 要素と bson.E 要素を使用するため、プロセスが少し混乱する可能性があります。
次の例は、その方法を示しています。ネストされた OR/AND クエリ フィルターを作成します:
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) } }
この例では:
$and 演算子がデフォルトであるため、明示的に指定する必要がないことに注意することが重要です。 それ。ただし、$and 内に他の演算子を入れ子にしたい場合は、bson.A スライスを使用して条件の配列を表す必要があります。
以上がGo ドライバーを使用して MongoDB でネストされた OR/AND クエリ フィルターを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。