Go 드라이버를 사용하여 MongoDB 쿼리에서 중첩 논리 연산자를 구성하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-19 01:17:02
원래의
733명이 탐색했습니다.

How to Construct Nested Logical Operators in MongoDB Queries with Go Driver?

중첩 논리 연산자로 MongoDB 쿼리

복잡한 MongoDB 쿼리를 작성할 때 AND 또는 내부에 OR와 같은 중첩 논리 연산자를 사용해야 합니다. 그 반대. 그러나 Go용 공식 MongoDB 드라이버는 이러한 쿼리를 구성할 때 문제를 제시합니다.

bson.E 요소를 예상하는 bson.D를 사용하여 계층화된 쿼리 필터를 생성하려고 할 때 문제가 발생합니다. 중첩된 OR/AND 논리를 달성하려면 다음 예에서 볼 수 있듯이 bson.D 내에 bson.M을 중첩하려고 시도할 수 있습니다.

filter := bson.M{"$and": bson.D{{"p", 10}, bson.M{"$or": bson.D{{"s", 30}, {"a", 1}}}}}
로그인 후 복사

그러나 이 접근 방식을 사용하면 "기본 요소를 사용할 수 없습니다"라는 오류가 발생합니다. .M 리터럴(유형 원시.M)을 슬라이스 리터럴의 원시.E 유형으로 사용합니다."

올바른 접근 방식은 $or 및 명시적인 $and 연산자를 생략합니다(기본적으로 암시됨). 중첩 필터를 생성하기 위한 세 가지 유효한 옵션은 다음과 같습니다.

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

// Option 2
filter = bson.D{
    {"p", 10},
    {"$or", bson.A{
        bson.M{"s": 30},
        bson.M{"a": 10},
    }},
}

// Option 3
filter := bson.M{
    "p": 10,
    "$or": bson.A{
        bson.M{"s": 30},
        bson.M{"a": 10},
    },
}
로그인 후 복사

이러한 필터는 중첩된 논리 표현식을 올바르게 나타내며 MongoDB 컬렉션에서 데이터를 검색하는 데 사용할 수 있습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿