Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

필터(집계)

이 페이지의 내용

  • 정의
  • 호환성
  • 구문
  • 행동
  • 예시
$filter

버전 3.2에 새로 추가되었습니다.

지정된 조건을 바탕으로 반환할 배열의 하위 집합을 선택합니다. 조건과 일치하는 요소만 포함되어 있는 배열을 반환하며, 반환된 요소는 원래 순서대로 표시됩니다.

다음 환경에서 호스팅되는 배포에 $filter 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

  • MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전

  • MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전

$filter 의 구문은 다음과 같습니다:

{
$filter:
{
input: <array>,
cond: <expression>,
as: <string>,
limit: <number expression>
}
}
필드
사양
input

배열로 해석되는 표현식 입니다.

inputnull 로 해석되거나 누락된 필드 를 참조하는 경우 $filternull 을 반환합니다.

input 이 배열과 null이 아닌 값으로 해석되면 파이프라인 오류가 발생합니다.

cond
요소를 출력 배열에 포함할지 여부를 결정하는 데 사용되는 부울 값으로 해석되는 표현식입니다. 표현식은 as에 지정된 변수 이름을 사용하여 input 배열의 각 요소를 개별적으로 참고합니다.
as
선택 사항. input 배열의 각 개별 요소를 나타내는 변수의 이름입니다. 이름을 지정하지 않으면 변수 이름은 기본적으로 this가 됩니다.
limit

선택 사항입니다. $filter가 반환한 일치하는 배열 요소의 수를 제한하는 숫자 표현식입니다. 1보다 작은 한도는 지정할 수 없습니다. 일치하는 배열 요소는 입력 배열에 나타나는 순서대로 반환됩니다.

지정된 limit이 일치하는 배열 요소의 수보다 크면 $filter는 일치하는 모든 배열 요소를 반환합니다. 제한이 null인 경우 $filter는 일치하는 모든 배열 요소를 반환합니다.

표현식에 대한 자세한 내용은 표현식을 참조하세요 .

예시
결과
{
$filter: {
input: [ 1, "a", 2, null, 3.1, NumberLong(4), "5" ],
as: "num",
cond: { $and: [
{ $gte: [ "$$num", NumberLong("-9223372036854775807") ] },
{ $lte: [ "$$num", NumberLong("9223372036854775807") ] }
] }
}
}
[ 1, 2, 3.1, NumberLong(4) ]

컬렉션 sales에는 다음 문서가 있습니다.

{
_id: 0,
items: [
{ item_id: 43, quantity: 2, price: 10 },
{ item_id: 2, quantity: 1, price: 240 }
]
}
{
_id: 1,
items: [
{ item_id: 23, quantity: 3, price: 110 },
{ item_id: 103, quantity: 4, price: 5 },
{ item_id: 38, quantity: 1, price: 300 }
]
}
{
_id: 2,
items: [
{ item_id: 4, quantity: 1, price: 23 }
]
}

다음 예시에서는 100보다 크거나 같은 price가 있는 문서만 포함하도록 items 배열을 필터링합니다.

db.sales.aggregate([
{
$project: {
items: {
$filter: {
input: "$items",
as: "item",
cond: { $gte: [ "$$item.price", 100 ] }
}
}
}
}
])

이 연산은 다음과 같은 결과를 생성합니다.

{
"_id" : 0,
"items" : [
{ "item_id" : 2, "quantity" : 1, "price" : 240 }
]
}
{
"_id" : 1,
"items" : [
{ "item_id" : 23, "quantity" : 3, "price" : 110 },
{ "item_id" : 38, "quantity" : 1, "price" : 300 }
]
}
{ "_id" : 2, "items" : [ ] }

돌아가기

$expMovingAvg

이 페이지의 내용