중첩 논리 연산자로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!