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

$let (표현식 연산자)

$let

지정된 식에 사용할 변수를 바인딩하고 식의 결과를 반환합니다.

The $let expression has the following syntax:

{
$let:
{
vars: { <var1>: <expression>, ... },
in: <expression>
}
}
필드
사양

vars

in 표현식에서 액세스할 수 있는 변수 에 대한 할당 블록입니다. 변수를 할당하려면 변수 이름에 문자열을 지정하고 값에 유효한 표현식을 할당합니다.

변수 할당은 in 표현식 외부는 물론 vars 블록 자체 내에서도 의미가 없습니다.

in

평가할 표현식 입니다.

애그리게이션 표현식의 변수에 액세스하려면 변수 이름 앞에 이중 달러 기호($$)를 붙이고 따옴표로 묶습니다. 표현식에 대한 자세한 내용은 표현식 을 참조하세요. 집계 파이프라인에서 변수를 사용하는 방법에 대한 자세한 내용 은 집계 표현식의 변수를 참조하세요.

$let can access variables defined outside its expression block, including system variables.

vars 블록에서 외부에서 정의된 변수의 값을 수정하면 새 값은 in 표현식에만 적용됩니다. in 표현식 외부에서 변수는 이전 값을 유지합니다.

vars 할당 블록에서 할당 순서는 중요하지 않으며 변수 할당은 in 표현식 내에서만 의미를 갖습니다. 따라서 vars 할당 블록의 변수 값에 액세스하는 것은 동일한 vars 블록 내부가 아닌 vars 블록 외부에 정의된 변수의 값을 의미합니다.

For example, consider the following $let expression:

{
$let:
{
vars: { low: 1, high: "$$low" },
in: { $gt: [ "$$low", "$$high" ] }
}
}

In the vars assignment block, "$$low" refers to the value of an externally defined variable low and not the variable defined in the same vars block. If low is not defined outside this $let expression block, the expression is invalid.

다음 문서가 포함된 sales collection입니다:

db.sales.insertMany( [
{ _id: 1, price: 10, tax: 0.50, applyDiscount: true },
{ _id: 2, price: 10, tax: 0.25, applyDiscount: false }
] )

The following aggregation uses $let in the $project pipeline stage to calculate and return the finalTotal for each document:

db.sales.aggregate( [
{
$project: {
finalTotal: {
$let: {
vars: {
total: { $add: [ '$price', '$tax' ] },
discounted: { $cond: { if: '$applyDiscount', then: 0.9, else: 1 } }
},
in: { $multiply: [ "$$total", "$$discounted" ] }
}
}
}
}
] )

이 집계는 다음과 같은 결과를 반환합니다.

{ "_id" : 1, "finalTotal" : 9.450000000000001 }
{ "_id" : 2, "finalTotal" : 10.25 }

팁

$map

이 페이지 평가하기

이 페이지의 내용