문서 메뉴
문서 홈
/ / /
Java Reactive Streams 드라이버
/

변경 스트림

이 페이지의 내용

  • 전제 조건
  • MongoDB 배포에 연결하기
  • 컬렉션 변경 사항 보기
  • 데이터베이스의 변경 사항 확인
  • 모든 데이터베이스의 변경 사항 확인
  • 콘텐츠 필터링

MongoDB 3.6 은 $changeStream 집계 파이프라인 연산자를 도입합니다.

변경 스트림을 사용하면 컬렉션의 문서에 대한 변경 사항을 관찰할 수 있습니다. 이 새 단계의 유용성을 개선하기 위해 MongoCollection 유형에는 새로운 watch() 메서드가 포함되어 있습니다. ChangeStreamPublisher 인스턴스는 변경 스트림을 설정하고 잠재적으로 복구 가능한 오류가 발생하면 자동으로 재개를 시도합니다.

이 가이드의 코드 예제를 실행하려면 다음 구성 요소를 설정해야 합니다.

  • test.restaurants 문서 restaurants.json 자산 GitHub 에 있는 파일의 문서로 채워진 컬렉션입니다.

  • 다음 가져오기 문:

import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoCollection;
import com.mongodb.reactivestreams.client.MongoDatabase;
import com.mongodb.client.model.Aggregates;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.changestream.FullDocument;
import com.mongodb.client.model.changestream.ChangeStreamDocument;
import org.bson.Document;

중요

이 가이드에서는 퀵 스타트 프라이머에 설명된 Subscriber 구현을 사용합니다.

먼저 MongoDB deployment에 연결한 다음 MongoDatabaseMongoCollection 인스턴스를 선언하고 정의합니다.

다음 코드는 포트 27017localhost 에서 실행되는 독립형 MongoDB 배포서버에 연결합니다. 그런 다음 test 데이터베이스를 참조하는 database 변수와 restaurants 컬렉션을 참조하는 collection 변수를 정의합니다.

MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("test");
MongoCollection<Document> collection = database.getCollection("restaurants");

MongoDB deployment에 연결하는 방법에 대해 자세히 알아보려면 MongoDB에 연결 튜토리얼을 참조하세요.

변경 스트림을 만들려면 MongoCollection.watch() 메서드 중 하나를 사용합니다.

다음 예제에서 change stream은 관찰한 모든 변경 사항을 출력합니다.

collection.watch().subscribe(new PrintDocumentSubscriber());

애플리케이션은 단일 change stream을 열어 데이터베이스의 모든 비시스템 collection을 감시할 수 있습니다. 이러한 change stream을 만들려면 MongoDatabase.watch() 메서드 중 하나를 사용합니다.

다음 예제에서 변경 스트림은 지정된 데이터베이스에서 관찰되는 모든 변경 사항을 출력합니다.

database.watch().subscribe(new PrintDocumentSubscriber());

애플리케이션은 단일 변경 스트림을 열어 MongoDB 배포에 있는 모든 데이터베이스의 모든 비시스템 컬렉션을 감시할 수 있습니다. 이러한 변경 스트림을 만들려면 MongoClient.watch() 메서드 중 하나를 사용합니다.

다음 예제에서 change stream은 MongoClient 가 연결된 배포에서 관찰하는 모든 변경 사항을 출력합니다.

client.watch().subscribe(new PrintDocumentSubscriber());

애그리게이션 단계 목록을 watch() 메서드에 전달하여 $changeStream 연산자가 반환한 데이터를 수정할 수 있습니다.

참고

모든 애그리게이션 연산자가 지원되는 것은 아닙니다. 자세한 내용은 MongoDB Server 매뉴얼의 Change Streams 를 참조하세요.

다음 예제에서 change stream은 insert, update, replacedelete 연산에 해당하는 모든 변경 사항을 출력합니다.

먼저 파이프라인에는 operationTypeinsert, update, replace 또는 delete 중 하나인 문서를 필터링하는 $match 단계가 포함되어 있습니다. 그런 다음 fullDocumentFullDocument.UPDATE_LOOKUP 로 설정하여 업데이트 후의 문서가 결과에 포함되도록 합니다.

collection.watch(
asList(
Aggregates.match(
Filters.in("operationType", asList("insert", "update", "replace", "delete"))
)
)
).fullDocument(FullDocument.UPDATE_LOOKUP).subscribe(new PrintDocumentSubscriber());

돌아가기

애그리게이션 프레임워크

다음

텍스트 검색