Docs Menu
Docs Home
/ / /
Java 동기화
/ /

쿼리 지정

이 페이지의 내용

  • 개요
  • 비교 연산자
  • 로직 연산
  • 배열 연산자
  • 요소 연산자
  • 평가 연산자

이 가이드에서는 MongoDB Java 드라이버에서 쿼리를 지정하는 방법을 학습할 수 있습니다.

대부분의 CRUD 작업은 쿼리 필터 에 일치 조건을 지정하여 일치하는 문서 세트의 범위를 좁힐 수 있습니다. 쿼리 필터에는 결과 세트에 포함할 문서를 결정하는 특정 필드에 적용되는 쿼리 연산자가 하나 이상 포함되어 있습니다.

이 페이지에서는 다음 쿼리 연산자를 사용 방법에 대한 예제를 통해 다룹니다.

  • 비교 연산자

  • 로직 연산

  • 배열 연산자

  • 요소 연산자

  • 평가 연산자

이 가이드의 예에서는 paint_purchases 컬렉션의 다음 문서를 사용합니다.

{ "_id": 1, "color": "red", "qty": 9, "vendor": ["A", "E"] }
{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 3, "color": "blue", "qty": 5, "vendor": ["A", "E"] }
{ "_id": 4, "color": "white", "qty": 6, "vendor": ["D"], "rating": 9 }
{ "_id": 5, "color": "yellow", "qty": 4, "vendor": ["A", "B"] }
{ "_id": 6, "color": "pink", "qty": 3, "vendor": ["C"] }
{ "_id": 7, "color": "green", "qty": 8, "vendor": ["C", "E"], "rating": 7 }
{ "_id": 8, "color": "black", "qty": 7, "vendor": ["A", "C", "D"] }

비교 연산자는 collection의 값과의 비교를 기반으로 데이터를 쿼리합니다. 일반적인 비교 연산자로는 '보다 큰(greater than)' 비교를 위한 gt() , '보다 작은(less than)' 비교를 위한 lte() , '같지 않은(not equal to)' 비교를 위한 ne() 이(가) 있습니다.

다음 예제에서는 메서드를 사용하여 Filters.gt() qty 7 paint_purchases collection에서 값이 보다 큰 모든 문서를 일치시킵니다.

Bson filter = Filters.gt("qty", 7);
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

다음은 앞선 쿼리의 출력입니다:

{ "_id": 1, "color": "red", "qty": 9, "vendor": ["A", "E"] }
{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 7, "color": "green", "qty": 8, "vendor": ["C", "E"], "rating": 7 }

논리 연산자는 필드 수준 연산자의 결과에 적용된 논리를 사용하여 데이터를 쿼리합니다. 일반적인 논리 연산자로는 모든 연산자가 참이어야 하는 and() , 연산자 중 하나 이상이 참이어야 하는 or() 등이 있습니다.

다음 예제에서는 Filters.and() 메서드를 사용하여 qty 5 color "pink" paint_purchases collection에서 값이 보다 작거나 같고 이 아닌 문서를 일치시킵니다.

Bson filter = Filters.and(Filters.lte("qty", 5), Filters.ne("color", "pink"));
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

다음은 앞선 쿼리의 출력입니다:

{ "_id": 3, "color": "blue", "qty": 5, "vendor": ["A", "E"] }
{ "_id": 5, "color": "yellow", "qty": 4, "vendor": ["A", "B"] }

배열 연산자는 배열 필드에 있는 요소의 값 또는 수량을 기반으로 데이터를 쿼리합니다.

다음 예제에서는 Filters.size() 메서드를 사용하여 paint_purchases 컬렉션에서 vendor 목록의 크기가 3 인 문서를 일치시킵니다.

Bson filter = Filters.size("vendor", 3);
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

다음은 앞선 쿼리의 출력입니다:

{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 8, "color": "black", "qty": 7, "vendor": ["A", "C", "D"] }

요소 연산자는 필드의 존재 여부 또는 유형에 따라 데이터를 쿼리합니다.

다음 예제에서는 Filters.exists() 메서드를 사용하여 rating paint_purchases collection에 가 있는 문서를 일치시킵니다.

Bson filter = Filters.exists("rating");
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

다음은 앞선 쿼리의 출력입니다:

{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 4, "color": "white", "qty": 6, "vendor": ["D"], "rating": 9 }
{ "_id": 7, "color": "green", "qty": 8, "vendor": ["C", "E"], "rating": 7 }

평가 연산자는 정규식 및 텍스트 검색과 같은 상위 수준의 로직에서 데이터를 쿼리합니다.

다음 예제에서는 Filters.regex() 메서드를 사용하여 color "k" paint_purchases collection에서 문자 로 끝나는 문서 가 있는 문서를 일치시킵니다.

Bson filter = Filters.regex("color", "k$");
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

다음은 앞선 쿼리의 출력입니다:

{ "_id": 6, "color": "pink", "qty": 3, "vendor": ["C"] }
{ "_id": 8, "color": "black", "qty": 7, "vendor": ["A", "C", "D"] }

이 가이드에 언급된 연산자에 대한 자세한 내용은 다음 서버 매뉴얼 항목을 참조하세요.

돌아가기

대량 작업