Docs Menu
Docs Home
/ /
/ / /

필드 경로

필드 경로 표현식을 사용하여 입력 문서의 필드에 액세스 . 필드 이름 또는 점으로 구분된 필드 경로 (내장된 문서의 경우) 앞에 달러 기호 $를 붙입니다.

다음 예시에서는 행성 컬렉션을 Atlas 샘플 데이터베이스에서 사용합니다. 이 컬렉션의 각 문서에는 다음과 같은 구조가 있습니다.

{
_id: new ObjectId("6220f6b78a733c51b416c80e"),
name: "Uranus",
orderFromSun: 7,
hasRings: true,
mainAtmosphere: [ "H2", "He", "CH4" ],
surfaceTemperatureC: { min: null, max: null, mean: -197.2 }
}

surfaceTemperatureC내에 중척된 mean 필드를 지정하려면 달러 표시($)와 함께 점 표기법 ("field.nestedField")을 사용합니다. 이 집계 파이프라인은 각 문서에 대해 mean 중척 필드 값만 프로젝트합니다.

db.planets.aggregate( [
{
$project: {
nested_field: "$surfaceTemperatureC.mean"
}
}
] )

반환된 문서 예시 :

{ _id: ObjectId('6220f6b78a733c51b416c80e'), nested_field: -197.2 }

필드 경로에 점 표기법 을 사용하여 배열 내에 중촉된 필드에 액세스할 수 있습니다. 예시들어 instock 필드가 중촉된 warehouse 필드의 배열을 포함하는 products 컬렉션을 고려해 보세요.

db.products.insertMany( [
{ item: "journal", instock: [ { warehouse: "A"}, { warehouse: "C" } ] },
{ item: "notebook", instock: [ { warehouse: "C" } ] },
{ item: "paper", instock: [ { warehouse: "A" }, { warehouse: "B" } ] },
{ item: "planner", instock: [ { warehouse: "A" }, { warehouse: "B" } ] },
{ item: "postcard", instock: [ { warehouse: "B" }, { warehouse: "C" } ] }
] )

다음 집계 파이프라인 $instock.warehouse 를 사용하여 중첩된 warehouse 필드에 액세스 .

db.products.aggregate( [
{
$project: {
item: 1,
warehouses: "$instock.warehouse"
}
}
] )

이 예시 에서 $instock.warehouse 은 각 문서 에 대해 중첩된 warehouse 필드 에 있는 값의 배열 출력합니다. 파이프라인 다음 문서를 반환합니다.

[
{
_id: ObjectId('6740b55e33b29cf6b1d884f7'),
item: "journal",
warehouses: [ "A", "C" ]
},
{
_id: ObjectId('6740b55e33b29cf6b1d884f8'),
item: "notebook",
warehouses: [ "C" ]
},
{
_id: ObjectId('6740b55e33b29cf6b1d884f9'),
item: "paper",
warehouses: [ "A", "B" ]
},
{
_id: ObjectId('6740b55e33b29cf6b1d884fa'),
item: "planner",
warehouses: [ "A", "B" ]
},
{
_id: ObjectId('6740b55e33b29cf6b1d884fb'),
item: "postcard",
warehouses: [ "B", "C" ]
}
]

필드 경로에 달러 기호 $ 가 있는 점 표기법 을 사용하여 중척된 배열 내의 배열에 액세스할 수도 있습니다. 다음 예시에서는 다음 문서가 있는 fruits 컬렉션을 사용합니다.

db.fruits.insertOne(
{
_id: ObjectId("5ba53172ce6fa2fcfc58e0ac"),
inventory: [
{
apples: [
"macintosh",
"golden delicious",
]
},
{
oranges: [
"mandarin",
]
},
{
apples: [
"braeburn",
"honeycrisp",
]
}
]
}
)

다음 집계 파이프라인은 inventory 내의 중척된 apples 배열에 액세스합니다.

db.fruits.aggregate( [
{ $project:
{ all_apples: "$inventory.apples" } }
] )

이 파이프라인 에서 $inventory.apples 은 중첩 배열의 배열 로 해석됩니다. 파이프라인 다음 문서 반환합니다.

{
_id: ObjectId('5ba53172ce6fa2fcfc58e0ac'),
all_apples: [
[ "macintosh", "golden delicious" ],
[ "braeburn", "honeycrisp" ]
]
}

중첩된 요소에 액세스하고 상호 작용하는 방법에 대한 자세한 내용은 점 표기법 및 내장된 문서 배열 쿼리를 참조하세요.

돌아가기

집계 파이프라인

이 페이지의 내용