>백엔드 개발 >Golang >MongoDB Go 드라이버를 사용하여 중첩된 OR/AND 쿼리를 구성하는 방법은 무엇입니까?

MongoDB Go 드라이버를 사용하여 중첩된 OR/AND 쿼리를 구성하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-01 15:33:11207검색

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

MongoDB Go 드라이버를 사용한 중첩 논리 쿼리

MongoDB 쿼리에서는 문서 기반 필터링을 위해 중첩 논리 연산자(AND/OR)를 사용해야 하는 경우가 많습니다. 여러 기준에 따라. Go MongoDB 드라이버에서는 bson.D 및 bson.M 유형을 사용하여 중첩된 논리적 쿼리를 구성할 수 있습니다.

중첩된 OR/AND 쿼리 구성

중첩된 OR/AND 쿼리의 경우 bson.D 유형을 사용하여 외부 논리 연산자(예: $and)를 나타내고 bson.E 요소를 전달해야 합니다. 그것에. 각 bson.E 요소는 필드-값 쌍을 나타냅니다. 여기서 필드 이름은 논리 연산자(예: $or)일 수 있고 값은 bson.D 또는 bson.A(배열의 경우)일 수 있습니다.

중첩 OR/AND 쿼리의 예

MongoDB를 고려해보세요 쿼리:

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

MongoDB 드라이버를 사용하여 Go에서 이 쿼리를 나타내려면 다음 코드를 사용할 수 있습니다.

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

이 예에서 bson.D는 외부 $를 나타냅니다. bson.A는 중첩된 $or 연산자를 나타냅니다. $or 내의 각 bson.D는 하위 쿼리를 나타냅니다.

중첩 쿼리에 bson.M 사용

bson.M 유형을 사용하여 나타낼 수도 있습니다. 중첩된 쿼리. bson.M은 필드 이름과 해당 값을 포함할 수 있는 map[string]인터페이스{}입니다. 값은 중첩된 쿼리를 나타내는 또 다른 bson.M 인스턴스일 수 있습니다.

예를 들어 위 쿼리는 다음과 같이 bson.M을 사용하여 표현할 수 있습니다.

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

권장 사항

  • 논리 연산자 내에서 배열을 표현하려면 bson.A를 사용하세요. (예: bson.A{bson.M{"foo": 1}}).
  • $and는 기본 논리 연산자이므로 쿼리에 명시적으로 포함할 필요가 없습니다.

이 지침을 따르면 MongoDB 드라이버를 사용하여 Go에서 중첩된 OR/AND 쿼리를 효율적으로 생성할 수 있습니다.

위 내용은 MongoDB Go 드라이버를 사용하여 중첩된 OR/AND 쿼리를 구성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.