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

$changeStream (집계)

이 페이지의 내용

  • 정의
  • Stable API 지원
  • 예시
$changeStream

컬렉션, 데이터베이스 또는 전체 클러스터 에서 변경 스트림 커서 를 반환합니다. 집계 파이프라인 의 첫 번째 단계로 사용해야 합니다.

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

{
$changeStream: {
allChangesForCluster: <boolean>,
fullDocument: <string>,
fullDocumentBeforeChange: <string>,
resumeAfter: <document>
showExpandedEvents: <boolean>,
startAfter: <document>
startAtOperationTime: <timestamp>
}
}
Parameter
설명

allChangesForCluster

선택 사항: 변경 스트림에 클러스터의 모든 변경 사항이 포함되어야 하는지 여부를 설정합니다. admin 데이터베이스에서만 열 수 있습니다.

fullDocument

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

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

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

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

    버전 6.0에 추가.

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

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

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

    버전 6.0에 추가.

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

fullDocumentBeforeChange

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

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

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

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

resumeAfter

선택 사항입니다. 변경 스트림의 논리적 시작점으로 재개 토큰 을 지정합니다. invalidate 이벤트 이후에 변경 스트림을 재개하는 데 사용할 수 없습니다.

resumeAfter 의 경우 startAfterstartAtOperationTime과 상호 배타적입니다.

showExpandedEvents

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

버전 6.0에 추가.

startAfter

선택 사항입니다. 변경 스트림의 논리적 시작점으로 재개 토큰을 지정합니다. resumeAfter와 달리 startAfter는 새로운 변경 스트림을 생성하여 invalidate 이벤트 후에 알림을 재개할 수 있습니다.

startAfter 의 경우 resumeAfterstartAtOperationTime과 상호 배타적입니다.

startAtOperationTime

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

변경 스트림은 Stable API V1 에 포함되어 있습니다. 그러나 showExpandedEvents 옵션은 Stable API V1 에 포함되어 있지 않습니다.

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

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

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

변경 스트림이 변경 사항을 감지하면 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

이 페이지의 내용