Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

$documents (집계)

이 페이지의 내용

  • 정의
  • 구문
  • 제한 사항
  • 행동
  • 예시
$documents

버전 6.0에 추가.

입력 값에서 리터럴 문서를 반환합니다.

$documents 단계의 형식은 다음과 같습니다.

{ $documents: <expression> }
  • 데이터베이스 수준 집계 파이프라인 에서는 $documents 만 사용할 수 있습니다.

  • 집계 파이프라인 의 첫 번째 단계로 $documents 을(를) 사용해야 합니다.

사용 예시는 아래를 참조하세요.

$documents 객체 배열로 해석되는 모든 유효한 표현식을 허용합니다. 여기에는 다음이 포함됩니다.

  • 시스템 변수(예: $$NOW 또는 $$SEARCH_META

  • $let 표현식

  • $lookup 표현식의 범위에 있는 변수

$myField 또는 $$ROOT와(과) 같이 현재 문서로 해석되지 않는 표현식은 오류를 발생시킵니다.

테스트 컬렉션을 만들지 않고 파이프라인 단계에 대한 테스트 및 디버깅 데이터를 생성합니다.

db.aggregate(
[
{ $documents: [ { x: 10 }, { x: 2 }, { x: 5 } ] },
{ $bucketAuto: { groupBy: "$x", buckets: 4 } }
]
)

집계 표현식은 컬렉션을 지정하지 않습니다. 강조 표시된 $documents 단계의 입력 데이터를 $bucketAuto 단계의 입력으로 사용합니다.

[
{ _id: { min: 2, max: 5 }, count: 1 },
{ _id: { min: 5, max: 10 }, count: 1 },
{ _id: { min: 10, max: 10 }, count: 1 }
]

$documents를 사용하여 컬렉션의 문서를 다른 데이터와 연관시켜 $lookup 출력을 수정합니다.

locations 컬렉션을 생성합니다.

db.locations.insertMany(
[
{ zip: 94301, name: "Palo Alto" },
{ zip: 10019, name: "New York" }
]
)

문서를 변환하려면 $documents를 데이터 소스로 사용합니다.

db.locations.aggregate(
[
{ $match: {} },
{ $lookup:
{
localField: "zip",
foreignField: "zip_id",
as: "city_state",
pipeline:
[
{ $documents:
[
{ zip_id: 94301, name: "Palo Alto, CA" },
{ zip_id: 10019, name: "New York, NY" }
]
}
]
}
}
]
)

출력은 locations 컬렉션의 데이터를 $documents 파이프라인 단계의 값과 연관시킵니다.

[
{
_id: ObjectId("618949d60f7bfd5f5689490d"),
zip: 94301,
name: 'Palo Alto',
city_state: [ { zip_id: 94301, name: 'Palo Alto, CA' } ]
},
{
_id: ObjectId("618949d60f7bfd5f5689490e"),
zip: 10019,
name: 'New York',
city_state: [ { zip_id: 10019, name: 'New York, NY' } ]
}
]
  • zip 필드는 zip_id 필드에 해당합니다

  • as 매개 변수는 새 출력 필드를 만듭니다.

$lookup 구문을 사용하는 하위 쿼리에 대한 자세한 내용은 Correlated Subqueries Using Concise Syntax 항목을 참조하세요.

돌아가기

$densify