227.6. MongoDB 작업 - 생산자 끝점


227.6.1. 쿼리 작업

227.6.1.1. findById

이 작업은 _id 필드가 IN 메시지 본문의 콘텐츠와 일치하는 컬렉션에서 하나의 요소만 검색합니다. 들어오는 오브젝트는 BSON 유형에 해당하는 모든 것이 될 수 있습니다. http://bsonspec.org// specification[ http://bsonspec.org//specification] 및 http://www.mongodb.org/display/DOCS/Java+Types.을 참조하십시오.

from("direct:findById")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=findById")
    .to("mock:resultFindById");
Copy to Clipboard Toggle word wrap
작은 정보

선택적 매개 변수를 지원합니다. 이 작업은 필드 필터 지정을 지원합니다. 선택적 매개변수 지정을 참조하십시오.

227.6.1.2. findOneByQuery

이 작업을 사용하여 MongoDB 쿼리와 일치하는 컬렉션에서 하나의 요소만 검색합니다. 쿼리 오브젝트는 IN 메시지 본문 (예: DBObject ) 유형 또는 DBObject 로 변환할 수 있어야 합니다. JSON 문자열 또는 Hashmap일 수 있습니다. 자세한 내용은 #Type 변환 에서 참조하십시오.

쿼리가 없는 예제( 컬렉션의 오브젝트를 반환함):

from("direct:findOneByQuery")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=findOneByQuery")
    .to("mock:resultFindOneByQuery");
Copy to Clipboard Toggle word wrap

쿼리 사용 예(단일 일치 결과를 반환함):

from("direct:findOneByQuery")
    .setBody().constant("{ \"name\": \"Raul Kripalani\" }")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=findOneByQuery")
    .to("mock:resultFindOneByQuery");
Copy to Clipboard Toggle word wrap
작은 정보

선택적 매개 변수를 지원합니다. 이 작업은 필드 필터 및/또는 정렬 절을 지정하는 것을 지원합니다. 선택적 매개변수 지정을 참조하십시오.

227.6.1.3. findAll

findAll 작업은 쿼리와 일치하는 모든 문서를 반환하거나 전혀 없는 경우 컬렉션에 포함된 모든 문서가 반환됩니다. 쿼리 오브젝트는 IN 메시지 본문 (예: DBObject ) 유형 또는 DBObject 로 변환할 수 있어야 합니다. JSON 문자열 또는 Hashmap일 수 있습니다. 자세한 내용은 #Type 변환 에서 참조하십시오.

쿼리가 없는 예제(컬렉션의 모든 개체를 반환함):

from("direct:findAll")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=findAll")
    .to("mock:resultFindAll");
Copy to Clipboard Toggle word wrap

쿼리 사용 예(모든 일치하는 결과를 반환함):

from("direct:findAll")
    .setBody().constant("{ \"name\": \"Raul Kripalani\" }")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=findAll")
    .to("mock:resultFindAll");
Copy to Clipboard Toggle word wrap

다음 헤더를 통해 페이징 및 효율적인 검색이 지원됩니다.

Expand
헤더 키빠른 일정description (MongoDB API doc에서 추출)예상 유형

CamelMongoDbNumToSkip

MongoDbConstants.NUM_TO_SKIP

커서가 시작될 때 지정된 수의 요소를 삭제합니다.

int/Integer

CamelMongoDbLimit

MongoDbConstants.LIMIT

반환된 요소 수를 제한합니다.

int/Integer

CamelMongoDbBatchSize

MongoDbConstants.BATCH_SIZE

하나의 일괄 처리에서 반환된 요소 수를 제한합니다. 커서는 일반적으로 결과 오브젝트의 배치를 가져와 로컬에 저장합니다. batchSize가 양수인 경우 검색된 각 개체의 크기를 나타냅니다. 성능을 최적화하고 데이터 전송을 제한하도록 조정할 수 있습니다. batchSize가 음수인 경우 최대 배치 크기 제한(일반적으로 4MB)에 맞는 숫자 개체가 제한되고 커서는 닫힙니다. 예를 들어 batchSize가 -10이면 서버는 최대 10개의 문서를 반환하고 4MB에 들어갈 수 있는 만큼의 문서를 반환하고 커서를 닫습니다. 이 기능은 문서가 최대 크기에 적합해야 한다는 점에서 limit()과 다르며 커서 서버 측을 닫기 위해 요청을 보낼 필요가 없습니다. 배치 크기는 커서를 반복한 후에도 변경할 수 있습니다. 이 경우 다음 배치 검색에 설정이 적용됩니다.

int/Integer

또한 outputType=DBCursor (Camel 2.16+)를 위의 헤더를 설정하는 것보다 더 간단할 수 있는 엔드포인트 옵션으로 서버에서 반환한 문서를 경로에 "스트림"할 수 있습니다. 이렇게 하면 Mongo 쉘 내에서 findAll()를 실행하는 것처럼 Mongo 드라이버에서 DBCursor를 내보내어 경로를 결과를 반복할 수 있습니다. 기본적으로 이 구성 요소에서는 드라이버의 커서에서 문서를 목록으로 로드하고 이를 경로로 반환하므로 메모리 내 개체가 많은 수가 발생할 수 있습니다. DBCursor가 일치하는 문서 수를 요청하지 않음을 기억하십시오. 자세한 내용은 MongoDB 문서 사이트를 참조하십시오.

outputType=DBCursor 및 배치 크기 옵션이 있는 예:

from("direct:findAll")
    .setHeader(MongoDbConstants.BATCH_SIZE).constant(10)
    .setBody().constant("{ \"name\": \"Raul Kripalani\" }")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=findAll&outputType=DBCursor")
    .to("mock:resultFindAll");
Copy to Clipboard Toggle word wrap

또한 findAll 작업은 다음 OUT 헤더를 반환하여 페이징을 사용하는 경우 결과 페이지를 반복할 수 있습니다.

Expand
헤더 키빠른 일정description (MongoDB API doc에서 추출)데이터 유형

CamelMongoDbResultTotalSize

MongoDbConstants.RESULT_TOTAL_SIZE

쿼리와 일치하는 오브젝트 수입니다. 이는 limit/skip를 고려하지 않습니다.

int/Integer

CamelMongoDbResultPageSize

MongoDbConstants.RESULT_PAGE_SIZE

쿼리와 일치하는 오브젝트 수입니다. 이는 limit/skip를 고려하지 않습니다.

int/Integer

작은 정보

선택적 매개 변수를 지원합니다. 이 작업은 필드 필터 및/또는 정렬 절을 지정하는 것을 지원합니다. 선택적 매개변수 지정을 참조하십시오.

227.6.1.4. count

컬렉션의 총 개체 수를 반환하여 OUT 메시지 본문으로 long을 반환합니다.
다음 예제에서는 "dynamicCollectionName" 컬렉션의 레코드 수를 계산합니다. 동적성이 활성화되어 결과적으로 "notableScientists" 컬렉션에 대해 작업이 실행되지 않고 "dynamicCollectionName" 컬렉션에 대해 작업이 실행되지 않습니다.

// from("direct:count").to("mongodb:myDb?database=tickets&collection=flights&operation=count&dynamicity=true");
Long result = template.requestBodyAndHeader("direct:count", "irrelevantBody", MongoDbConstants.COLLECTION, "dynamicCollectionName");
assertTrue("Result is not of type Long", result instanceof Long);
Copy to Clipboard Toggle word wrap

Camel 2.14 에서 메시지 본문에 com.mongodb.DBObject 오브젝트를 쿼리로 제공할 수 있으며 작업은 이 기준에 맞는 문서 양을 반환합니다. 

 

DBObject query = ...
Long count = template.requestBodyAndHeader("direct:count", query, MongoDbConstants.COLLECTION, "dynamicCollectionName");
Copy to Clipboard Toggle word wrap

227.6.1.5. 필드 필터(프로젝션) 지정

기본적으로 쿼리 작업은 일치하는 오브젝트 전체를 반환합니다(모든 필드 포함). 문서가 크고 해당 필드의 하위 집합만 검색해야 하는 경우 모든 쿼리 작업에서 필드 필터를 지정할 수 있습니다. 즉, 관련 DBObject (또는 JSON String, Map 등)로 변환할 수 있습니다. CamelMongoDbFieldsFilter 헤더, 연속 바로 가기: MongoDbConstants.FIDS_FIDS_FI ER.

다음은 MongoDB의 BasicDBObjectBuilder를 사용하여 DBObject 생성을 단순화하는 예입니다. _id 및ted Field를 제외한 모든 필드를 검색합니다.

// route: from("direct:findAll").to("mongodb:myDb?database=flights&collection=tickets&operation=findAll")
DBObject fieldFilter = BasicDBObjectBuilder.start().add("_id", 0).add("boringField", 0).get();
Object result = template.requestBodyAndHeader("direct:findAll", (Object) null, MongoDbConstants.FIELDS_FILTER, fieldFilter);
Copy to Clipboard Toggle word wrap

227.6.1.6. 정렬 절 지정

특정 필드의 정렬에 따라 컬렉션에서 min/max 레코드를 가져와야 하는 경우가 많습니다. Mongo에서 작업은 다음과 유사한 구문을 사용하여 수행됩니다.

db.collection.find().sort({_id: -1}).limit(1)
// or
db.collection.findOne({$query:{},$orderby:{_id:-1}})
Copy to Clipboard Toggle word wrap

Camel 경로에서 SORT_BY 헤더를 findOneByQuery 작업과 함께 사용하여 동일한 결과를 얻을 수 있습니다. FIELDS_FILTER 헤더가 지정된 경우 작업은 다른 구성 요소(예: 매개 변수가 있는 MyBatis SELECT 쿼리)로 직접 전달할 수 있는 단일 필드/값 쌍을 반환합니다. 이 예제에서는 documentTimestamp 필드를 기반으로 한 컬렉션에서 임시 문서를 가져와서 결과를 단일 필드로 줄이는 방법을 보여줍니다.

.from("direct:someTriggeringEvent")
.setHeader(MongoDbConstants.SORT_BY).constant("{\"documentTimestamp\": -1}")
.setHeader(MongoDbConstants.FIELDS_FILTER).constant("{\"documentTimestamp\": 1}")
.setBody().constant("{}")
.to("mongodb:myDb?database=local&collection=myDemoCollection&operation=findOneByQuery")
.to("direct:aMyBatisParameterizedSelect")
;
Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동