"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > MongoDB Go 드라이버를 사용하여 중첩된 OR/AND 쿼리를 구성하는 방법은 무엇입니까?

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

2025-01-11에 게시됨
검색:462

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는 외부 $and 연산자를 나타내고 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 쿼리를 효율적으로 생성할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3