마침표가 있는 필드 이름
이 섹션에서는 필드 이름에 마침표가 포함된 문서를 삽입, 쿼리 및 업데이트하는 방법을 요약합니다.
마침표가 있는 필드 이름 삽입
마침표가 있는 필드 이름이 포함된 문서를 삽입하려면 필드 이름을 따옴표로 묶습니다.
다음 명령은 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 } ]
을 사용하지 않는 경우 MongoDB는 마침표가 있는 필드 이름을 포함된 객체로 처리합니다. 예를 들어, 다음 쿼리는 필드 $getField
usd
내의 price
필드가 보다 큰 문서와 일치합니다.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 } } ]
집계 파이프라인을 사용한 업데이트의 더 많은 예는 집계 파이프라인을 사용한 업데이트를 참조하세요.