$literal (애그리게이션)
정의
$literal
구문 분석 없이 값을 반환합니다. aggregation pipeline이 표현식으로 해석할 수 있는 값에 사용됩니다.
$literal
표현식의 구문은 다음과 같습니다.{ $literal: <value> }
행동
<value>
가 표현식 인 경우 $literal
는 표현식을 평가하지 않고 대신 구문 분석되지 않은 표현식을 반환합니다.
예제 | 결과 |
---|---|
{ $literal: { $add: [ 2, 3 ] } } | { "$add" : [ 2, 3 ] } |
{ $literal: { $literal: 1 } } | { "$literal" : 1 } |
예제
을 $
리터럴로취급
표현식에서 달러 기호 $
는 필드 경로로 평가됩니다. 즉, 필드에 대한 액세스를 제공합니다. 예를 들어 $eq
표현식 $eq: [
"$price", "$1" ]
은 문서에서 이름이 price
인 필드에 있는 값과 이름이 1
인 필드에 있는 값 간에 동일성 검사를 수행합니다.
다음 예시에서는 $literal
표현식을 사용하여 달러 기호("$1"
)가 포함된 문자열을 상수 값으로 처리합니다.
다음 문서가 포함된 storeInventory
collection입니다:
db.storeInventory.insertMany( [ { "_id" : 1, "item" : "napkins", price: "$2.50" }, { "_id" : 2, "item" : "coffee", price: "1" }, { "_id" : 3, "item" : "soap", price: "$1" } ] )
db.storeInventory.aggregate( [ { $project: { costsOneDollar: { $eq: [ "$price", { $literal: "$1" } ] } } } ] )
이 연산은 price
필드의 값이 문자열 "$1"
와 같은지 여부를 나타내는 부울 값을 포함하는 costsOneDollar
필드를 프로젝션합니다.
{ "_id" : 1, "costsOneDollar" : false } { "_id" : 2, "costsOneDollar" : false } { "_id" : 3, "costsOneDollar" : true }
값으로 새 필드 프로젝션 1
$project
단계는 <field>: 1
표현식을 사용하여 출력에 <field>
를 포함합니다. 다음 예시에서는 $literal
을 사용하여 1
값으로 설정된 새 필드를 반환합니다.
다음 문서가 포함된 books
collection입니다:
db.books.insertMany([ { "_id" : 1, "title" : "Dracula", "condition": "new" }, { "_id" : 2, "title" : "The Little Prince", "condition": "new" } ])
{ $literal: 1 }
표현식은 1
값으로 설정된 새 editionNumber
필드를 반환합니다.
db.books.aggregate( [ { $project: { "title": 1, "editionNumber": { $literal: 1 } } } ] )
이 연산을 수행하면 다음 문서가 생성됩니다.
{ "_id" : 1, "title" : "Dracula", "editionNumber" : 1 } { "_id" : 2, "title" : "The Little Prince", "editionNumber" : 1 }