AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.

$push (축적자 연산자)

$push

그룹의 각 문서에 표현식을 적용한 결과로 생성되는 모든 값의 배열을 반환합니다.

$push 축적자는 다음 단계에서 사용할 수 있습니다.

참고

명확화

이 페이지에서는 $push을 축적자로 사용할 때에 대해 설명합니다. 축적자는 입력 문서 그룹 전체에서 집계된 값을 반환합니다.

$push를 다른 다음 문맥에서도 사용할 수 있습니다:

{ $push: <expression> }

표현식에 대한 자세한 내용은 표현식을 참조하세요 .

$push를 축적자로 사용하는 경우, 파이프라인으로 들어오는 문서의 순서에 따라 출력 배열의 문서 순서가 결정됩니다. 정의된 순서를 $sort 보장하려면 단계 앞에 $group 단계를 배치합니다.

$push 축적자는 임시 파일을 디스크에 쓰기 (write) 수 없습니다. internalQueryMaxPushBytes 서버 매개변수는 $push 메모리 제한을 제어하며, 누적된 배열이 해당 제한을 초과하면 allowDiskUse가 true인 경우에도 MongoDB는 오류를 반환합니다. 기본값은 104857600 바이트(100 메가바이트)입니다. 런타임 시 setParameter 명령을 사용하여 최대 2147483647 바이트까지 제한을 높일 수 있습니다.

집계 메모리 제한에 대한 자세한 내용은 집계 파이프라인 제한을 참조하세요.

이 페이지의 예시는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB 배포서버에 로드하는 방법에 대한 자세한 내용은 샘플 데이터세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우, 이 페이지의 예시를 실행하려면 데이터베이스를 제거하고 다시 생성해야 할 수 있습니다.

다음 작업은 디렉터별로 영화를 그룹하고 $push 축적자를 사용하여 해당 디렉터가 감독한 각 영화의 프라이머리 장르를 수집합니다.

db.movies.aggregate( [ { $match: { year: { $gte: 2010, $lte: 2015 }, genres: { $exists: true, $ne: [] }, directors: { $exists: true, $ne: [] } } }, { $unwind: "$directors" }, { $group: { _id: "$directors", genres: { $push: { $first: "$genres" } } } }, { $sort: { _id: 1 } }, { $limit: 5 }] )

이전 파이프라인:

  • $match를 사용하여 2010-2015 년에서 장르 및 디렉터 정보가 있는 영화를 필터링합니다.

  • $unwind를 사용하여 directors 배열에 있는 각 디렉터에 대해 별도 문서를 만듭니다.

  • 결과 문서를 디렉터별로 그룹화하고 $push을 사용하여 각 필름의 프라이머리 장르를 수집합니다.

  • 결과를 디렉터 이름으로 알파벳 순서로 정렬합니다.

  • 출력을 다섯 명의 디렉터로 제한합니다.

출력에서, A.R. Murugadoss은 Action을 두 번 목록했습니다. 이는 이 Action를 프라이머리 장르로 하는 영화 두 편을 연출했기 때문입니다. 단일 값 배열을 반환하는 $addToSet와는 달리, $push 에는 중복 값이 포함되어 있음을 이로써 보여줍니다.