$documents (집계)
정의
구문
$documents
단계의 형식은 다음과 같습니다.
{ $documents: <expression> }
제한 사항
데이터베이스 수준 집계 파이프라인 에서는
$documents
만 사용할 수 있습니다.집계 파이프라인 의 첫 번째 단계로
$documents
을(를) 사용해야 합니다.
행동
$documents
객체 배열로 해석되는 모든 유효한 표현식을 허용합니다. 여기에는 다음이 포함됩니다.
$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
단계사용
$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 항목을 참조하세요.