문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

$changeStream (aggregation)

이 페이지의 내용

  • 정의
  • 예제
$changeStream

컬렉션, 데이터베이스 또는 전체 클러스터에 대한 Change Stream 커서를 반환합니다. aggregation pipeline의 첫 번째 단계로 사용해야 합니다.

$changeStream 단계의 구문은 다음과 같습니다.

{
$changeStream: {
allChangesForCluster: <boolean>,
fullDocument: <string>,
fullDocumentBeforeChange: <string>,
resumeAfter: <int>
showExpandedEvents: <boolean>,
startAfter: <document>
startAtOperationTime: <timestamp>
}
}
매개변수
설명
allChangesForCluster
선택 사항: 변경 스트림에 클러스터의 모든 변경 사항이 포함되어야 하는지 여부를 설정합니다. admin 데이터베이스에서만 열 수 있습니다.
fullDocument

선택 사항: update 작업으로 수정된 경우 변경 알림에 전체 문서의 사본을 포함할지 여부를 지정합니다.

  • default: 변경 알림에 update 작업에 대한 전체 문서가 포함되어 있지 않습니다.

  • required: 변경 알림에 변경 직후 나타난 수정된 문서의 복사본이 포함됩니다. 문서를 찾을 수 없는 경우 Change Stream에서 오류가 발생합니다.

    이 옵션을 사용하려면 먼저 collMod 명령을 사용하여 changeStreamPreAndPostImages 옵션을 활성화해야 합니다.

    버전 6.0에 추가.

  • updateLookup: 변경 알림에는 변경으로 수정된 문서의 복사본이 포함됩니다. 이 문서는 현재 가장 많이 커밋된 문서이거나 null(문서가 더 이상 존재하지 않는 경우)입니다.

  • whenAvailable: 변경 알림에는 변경 직후에 나타난 수정된 문서의 사본이 포함되며, 문서를 사용할 수 없는 경우에는 null이 포함됩니다.

    이 옵션을 사용하려면 먼저 collMod 명령을 사용하여 changeStreamPreAndPostImages 옵션을 활성화해야 합니다.

    버전 6.0에 추가.

부분 업데이트의 경우 변경 알림에는 변경에 대한 설명도 제공됩니다.

fullDocumentBeforeChange

변경 전의 전체 문서를 포함하세요. 이 필드에는 다음 값을 사용할 수 있습니다.

  • off: 변경 전의 문서를 포함하지 않습니다.

  • whenAvailable: 변경 전의 문서를 포함합니다. 수정되지 않은 문서를 사용할 수 없는 경우 쿼리가 실패하지 않습니다.

  • required: 변경 전의 문서를 포함합니다. 수정되지 않은 문서를 사용할 수 없으면 쿼리가 실패합니다.

resumeAfter
변경 스트림의 논리적 시작점으로 재개 토큰을 지정합니다. startAfter 또는 startAtOperationTime 필드와 함께 사용할 수 없습니다.
showExpandedEvents

DDL, 인덱스 작업 등 추가 변경 이벤트를 포함할지 여부를 지정합니다.

버전 6.0에 추가.

startAfter
변경 스트림의 논리적 시작점으로 재개 토큰을 지정합니다. resumeAfter 또는 startAtOperationTime 필드와 함께 사용할 수 없습니다.
startAtOperationTime
변경 스트림의 논리적 시작점으로 시간을 지정합니다. resumeAfter 또는 startAfter 필드와 함께 사용할 수 없습니다.

애그리게이션 단계를 사용하여 변경 스트림 커서를 생성하려면 aggregate 명령을 실행합니다.

var cur = db.names.aggregate( [
{ $changeStream: {} }
] )

커서를 열려면 cur을(를) 실행합니다.

Change Stream이 변경 사항을 감지하면 next() 메서드는 변경 이벤트 알림을 반환합니다. 예를 들어 cur.next()를 실행한 후 MongoDB는 다음과 유사한 문서를 반환합니다.

{
"_id": {
_data: "8262E2EE54000000022B022C0100296E5A100448E5E3DD01364019AE8FE8C6859527E046645F6964006462E2EE54C8756C0D5CF6F0720004"
},
"operationType": "insert",
"clusterTime": Timestamp({ t: 1659039316, i: 2 }),
"wallTime": ISODate("2022-07-28T20:15:16.148Z"),
"fullDocument": {
"_id": ObjectId("62e2ee54c8756c0d5cf6f072"),
"name": "Walker Percy"
},
"ns": {
"db": "test",
"coll": "names"
},
"documentKey": { _id: ObjectId("62e2ee54c8756c0d5cf6f072") }
}

변경 스트림 알림에 관한 자세한 내용은 변경 이벤트에서 확인하세요.

← $bucketAuto (aggregation)

이 페이지의 내용