정의
$changeStream컬렉션, 데이터베이스 또는 전체 클러스터 에서 변경 스트림 커서 를 반환합니다. 집계 파이프라인 의 첫 번째 단계로 사용해야 합니다.
$changeStream단계의 구문은 다음과 같습니다.{ $changeStream: { allChangesForCluster: <boolean>, fullDocument: <string>, resumeAfter: <document> startAfter: <document> startAtOperationTime: <timestamp> } } Parameter설명allChangesForCluster선택 사항: 변경 스트림에 클러스터의 모든 변경 사항이 포함되어야 하는지 여부를 설정합니다.
admin데이터베이스에서만 열 수 있습니다.fullDocument선택 사항:
update작업으로 수정된 경우 변경 알림에 전체 문서의 사본을 포함할지 여부를 지정합니다.default: 변경 알림에update작업에 대한 전체 문서가 포함되어 있지 않습니다.updateLookup: 변경 알림에는 변경으로 수정된 문서의 복사본이 포함됩니다. 이 문서는 현재 가장 많이 커밋된 문서이거나null(문서가 더 이상 존재하지 않는 경우)입니다.
부분 업데이트의 경우 변경 알림에는 변경에 대한 설명도 제공됩니다.
resumeAfter선택 사항입니다. 변경 스트림의 논리적 시작점으로 재개 토큰 을 지정합니다.
invalidate이벤트 이후에 변경 스트림을 재개하는 데 사용할 수 없습니다.resumeAfter의 경우startAfter및startAtOperationTime과 상호 배타적입니다.startAfter선택 사항입니다. 변경 스트림의 논리적 시작점으로 재개 토큰을 지정합니다.
resumeAfter와 달리startAfter는 새로운 변경 스트림을 생성하여invalidate이벤트 후에 알림을 재개할 수 있습니다.startAfter의 경우resumeAfter및startAtOperationTime과 상호 배타적입니다.startAtOperationTime변경 스트림의 논리적 시작점으로 시간을 지정합니다.
resumeAfter또는startAfter필드와 함께 사용할 수 없습니다.
Stable API 지원
변경 스트림은 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 }), "fullDocument": { "_id": ObjectId("62e2ee54c8756c0d5cf6f072"), "name": "Walker Percy" }, "ns": { "db": "test", "coll": "names" }, "documentKey": { _id: ObjectId("62e2ee54c8756c0d5cf6f072") } }
변경 스트림 알림에 관한 자세한 내용은 변경 이벤트에서 확인하세요.