마침표가 있는 필드 이름
이 섹션에서는 마침표가 포함된 필드 이름을 가진 문서를 삽입, 쿼리, 업데이트하는 방법을 요약하여 설명합니다.
마침표가 있는 필드 이름 삽입
마침표가 있는 필드 이름을 포함하는 문서를 삽입하려면 필드 이름을 따옴표 안에 넣습니다.
다음 명령은 price.usd
필드 이름이 포함된 문서를 삽입합니다.
db.inventory.insertOne( { "item" : "sweatshirt", "price.usd": 45.99, "quantity": 20 } )
기간이 있는 필드 쿼리
마침표가 있는 필드 를 쿼리 하려면 $getField
연산자 를 사용합니다.
다음 쿼리는 price.usd
필드가 40
보다 큰 문서를 반환합니다.
db.inventory.find( { $expr: { $gt: [ { $getField: "price.usd" }, 40 ] } } )
[ { _id: ObjectId("66145f9bcb1d4abffd2f1b50"), item: 'sweatshirt', 'price.usd': 45.99, quantity: 20 } ]
$getField
를 사용하지 않는 경우 MongoDB는 마침표가 있는 필드 이름을 내장된 객체로 취급합니다. 예를 들어, 다음 쿼리는 price
필드 내의 usd
필드가 40
보다 큰 문서와 일치합니다.
db.inventory.find( { "price.usd": { $gt: 40 } } )
앞의 쿼리는 이 문서와 일치합니다.
{ "item" : "sweatshirt", "price": { "usd": 45.99 }, "quantity": 20 }
마침표가 있는 필드 업데이트
마침표가 있는 필드를 업데이트하려면 $setField
연산자와 함께 집계 파이프라인을 사용하세요.
다음 작업은 price.usd
필드를 29.99
(으)로 설정합니다.
db.inventory.updateOne( { "item": "sweatshirt" }, [ { $replaceWith: { $setField: { field: "price.usd", input: "$$ROOT", value: 29.99 } } } ] )
$setField
를 사용하지 않는 경우, MongoDB는 마침표가 있는 필드 이름을 내장된 객체로 취급합니다. 예를 들어, 다음 작업은 기존 price.usd
필드를 업데이트하지 않고 대신 price
필드에 내장된 새 필드 usd
를 삽입합니다.
db.inventory.updateOne( { "item": "sweatshirt" }, { $set: { "price.usd": 29.99 } } )
결과 문서:
[ { _id: ObjectId("66145f9bcb1d4abffd2f1b50"), item: 'sweatshirt', 'price.usd': 45.99 quantity: 20, price: { usd: 29.99 } } ]
집계 파이프라인을 사용한 업데이트의 더 많은 예시는 집계 파이프라인을 사용한 업데이트를 참조하세요.