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 중국어 웹사이트의 기타 관련 기사를 참조하세요!