필터(집계)
정의
호환성
다음 환경에서 호스팅되는 배포에 $filter
사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
$filter
의 구문은 다음과 같습니다:
{ $filter: { input: <array>, cond: <expression>, as: <string>, limit: <number expression> } }
필드 | 사양 |
---|---|
input | 배열로 해석되는 표현식 입니다.
|
cond | 요소를 출력 배열에 포함할지 여부를 결정하는 데 사용되는 부울 값으로 해석되는 표현식입니다. 표현식은 as 에 지정된 변수 이름을 사용하여 input 배열의 각 요소를 개별적으로 참고합니다. |
as | |
limit |
표현식에 대한 자세한 내용은 표현식을 참조하세요 .
행동
예시 | 결과 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| [ 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" : [ ] }