AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

getField(표현식 연산자)

$getField

버전 5.0의 신규 항목입니다.

문서 에서 지정된 필드 의 값을 반환합니다. 객체 지정하지 않으면$getField 는 의 필드 값을 $$CURRENT 반환합니다.

$getField를 사용하여 이름에 마침표()가. 포함되거나 달러 기호()로 시작하는 필드 값을 조회 할 수$ 있습니다.

일부 쿼리 처리 컨텍스트에서 이러한 필드가 제거되거나 액세스할 수 없을 수 있으므로 예약된 내부 메타데이터 필드 이름과 충돌되는 루트 수준의 달러 접두사 필드 이름을 사용하지 마세요. 달러 기호($)나 마침표(.)가 포함된 필드 이름의 제한 사항 및 지침은 마침표 및 달러 기호가 포함된 필드 이름을 참조하세요.

$setField을(를) 사용하여 달러 기호($) 또는 마침표(.)가 포함된 이름의 필드를 추가하거나 업데이트합니다.

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

{
$getField: {
field: <String>,
input: <Object>
}
}
필드
유형
설명

field

문자열

값을 반환하려는 입력 객체 입니다.

7.2 버전에서 변경됨:

field 문자열로 해석되는 모든 유효한 표현식을 허용합니다.

field가 달러 기호($)로 시작하는 경우 필드 이름을 $literal 표현식 안에 배치하여 해당 값을 반환합니다.

input

객체

기본값: $$CURRENT

값을 반환하려는 field가 포함된 유효한 표현식입니다. input은 객체, missing, null 또는 undefined로 해석되어야 합니다. 생략되면 기본값으로 파이프라인에서 현재 처리 중인 문서($$CURRENT)가 사용됩니다.

$getField 에는 에서 필드 값을 검색하기 위한 다음과 같은 약식 구문이 $$CURRENT 있습니다.

{
$getField: <String>
}

이 구문의 경우 인수는 위에 설명된 field 값과 동일합니다.

  • field 지정한 이 input 객체 에 없거나 객체 지정하지 않은 경우 에 없는 $$CURRENT input 경우 는$getFieldmissing 반환합니다.

  • input missingundefined가, 또는 null$getField 평가되면 null 은 를 반환합니다.

  • input가 객체,, missing undefined또는 이외의 것으로 평가되면 null $getField는 오류를 반환합니다.

  • $getField 객체나 배열을 암시적으로 순회하지 않습니다. 예시 를$getField 들어 field 는 의 값을 a.b.c a.b.c 중첩된 필드 대신 최상위 필드 { a: { b: { c: } } } 로 평가합니다.

다음 문서가 포함된 inventory 컬렉션을 생각해 보세요.

db.inventory.insertMany( [
{ _id: 1, item: "sweatshirt", "price.usd": 45.99, qty: 300 },
{ _id: 2, item: "winter coat", "price.usd": 499.99, qty: 200 },
{ _id: 3, item: "sun dress", "price.usd": 199.99, qty: 250 },
{ _id: 4, item: "leather boots", "price.usd": 249.99, qty: 300 },
{ _id: 5, item: "bow tie", "price.usd": 9.99, qty: 180 }
] )

다음 연산은 및 연산자를 $getField $gt 사용하여 가 price.usd 보다 큰 제품을 200 찾습니다.

db.inventory.aggregate( [
{
$match:
{ $expr:
{ $gt: [ { $getField: "price.usd" }, 200 ] }
}
}
] )

이 연산은 다음과 같은 결과를 반환합니다.

[
{ _id: 2, item: 'winter coat', qty: 200, 'price.usd': 499.99 },
{ _id: 4, item: 'leather boots', qty: 300, 'price.usd': 249.99 }
]

다음 문서가 포함된 inventory 컬렉션을 생각해 보세요.

db.inventory.insertMany( [
{ _id: 1, item: "sweatshirt", "$price": 45.99, qty: 300 },
{ _id: 2, item: "winter coat", "$price": 499.99, qty: 200 },
{ _id: 3, item: "sun dress", "$price": 199.99, qty: 250 },
{ _id: 4, item: "leather boots", "$price": 249.99, qty: 300 },
{ _id: 5, item: "bow tie", "$price": 9.99, qty: 180 }
] )

다음 작업은,$getField$gt 및 연산자를 $literal 사용하여 $price 200가 보다 큰 제품을 찾습니다.

db.inventory.aggregate( [
{
$match:
{ $expr:
{ $gt: [ { $getField: {$literal: "$price" } }, 200 ] }
}
}
] )

이 연산은 다음과 같은 결과를 반환합니다.

[
{ _id: 2, item: 'winter coat', qty: 200, '$price': 499.99 },
{ _id: 4, item: 'leather boots', qty: 300, '$price': 249.99 }
]

다음 문서로 inventory collection을 생성합니다.

db.inventory.insertMany( [
{ _id: 1, item: "sweatshirt", "price.usd": 45.99,
quantity: { "$large": 50, "$medium": 50, "$small": 25 }
},
{ _id: 2, item: "winter coat", "price.usd": 499.99,
quantity: { "$large": 35, "$medium": 35, "$small": 35 }
},
{ _id: 3, item: "sun dress", "price.usd": 199.99,
quantity: { "$large": 45, "$medium": 40, "$small": 5 }
},
{ _id: 4, item: "leather boots", "price.usd": 249.99,
quantity: { "$large": 20, "$medium": 30, "$small": 40 }
},
{ _id: 5, item: "bow tie", "price.usd": 9.99,
quantity: { "$large": 0, "$medium": 10, "$small": 75 }
}
] )

다음 작업은 $small 항목 수가 20 이하인 문서를 반환합니다.

db.inventory.aggregate( [
{ $match:
{ $expr:
{ $lte:
[
{ $getField:
{ field: { $literal: "$small" },
input: "$quantity"
}
},
20
]
}
}
}
] )

이러한 연산자를 사용하여 collection을 쿼리합니다:

  • $lte 연산자는 20보다 작거나 같은 값을 찾습니다.

  • 필드 하위 문서의 일부이므로 에는$getField 명시적인 field 및 매개 변수가 필요합니다.input $small

  • 는 필드 이름에 달러 기호()가 있기 때문에$getField 를 사용하여 "$literal "을$small$ 평가합니다.

출력 예시:

[
{
_id: 3,
item: 'sun dress',
'price.usd': 199.99,
quantity: { '$large': 45, '$medium': 40, '$small': 5 }
}
]
이 페이지 평가하기

이 페이지의 내용