229.6. MongoDB 작업 - 생산자 끝점


229.6.1. 쿼리 작업

229.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("mongodb3:myDb?database=flights&collection=tickets&operation=findById")
    .to("mock:resultFindById");
작은 정보

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

229.6.1.2. findOneByQuery

이 작업을 사용하여 MongoDB 쿼리와 일치하는 컬렉션에서 하나의 요소(first)만 검색합니다. 쿼리 오브젝트가 CamelMongoDbCr iteHeader 헤더. CamelMongoDbCrite rare 헤더가 null인 경우 쿼리 오브젝트가 추출된 메시지 본문입니다. 즉 Bson 유형이거나 Bson 으로 변환할 수 있어야 합니다. JSON 문자열 또는 Hashmap일 수 있습니다. 자세한 내용은 #Type 변환을 참조하십시오. MongoDB 드라이버에서 Filters 클래스를 사용할 수 있습니다.

쿼리가 없는 예(컬렉션의 모든 개체를 복원함):

from("direct:findOneByQuery")
    .to("mongodb3:myDb?database=flights&collection=tickets&operation=findOneByQuery")
    .to("mock:resultFindOneByQuery");

쿼리가 있는 예(1개의 일치하는 결과가 반환)의 예:

from("direct:findOneByQuery")
    .setHeader(MongoDbConstants.CRITERIA, Filters.eq("name", "Raul Kripalani"))
    .to("mongodb3:myDb?database=flights&collection=tickets&operation=findOneByQuery")
    .to("mock:resultFindOneByQuery");
작은 정보

선택적 매개변수를 지원합니다. 이 작업을 통해 프로젝션 및/또는 sort 절을 지정할 수 있습니다. 선택적 매개변수 지정을 참조하십시오.

229.6.1.3. findAll

findAll 작업은 쿼리와 일치하는 모든 문서를 반환하거나 전혀 없는 경우 컬렉션에 포함된 모든 문서가 반환됩니다. 쿼리 오브젝트가 CamelMongoDbCr iteHeader 헤더. CamelMongoDbCrite rare 헤더가 null인 경우 쿼리 오브젝트가 추출된 메시지 본문입니다. 즉 Bson 유형이거나 Bson 으로 변환할 수 있어야 합니다. JSON 문자열 또는 Hashmap일 수 있습니다. 자세한 내용은 #Type 변환을 참조하십시오.

쿼리가 없는 예제입니다(컬렉션의 모든 개체를 복원함):

from("direct:findAll")
    .to("mongodb3:myDb?database=flights&collection=tickets&operation=findAll")
    .to("mock:resultFindAll");

쿼리가 있는 예(모든 일치하는 결과가 반환)의 예:

from("direct:findAll")
    .setHeader(MongoDbConstants.CRITERIA, Filters.eq("name", "Raul Kripalani"))
    .to("mongodb3:myDb?database=flights&collection=tickets&operation=findAll")
    .to("mock:resultFindAll");

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

헤더 키빠른 상수설명 (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개의 문서와 가능한 한 많은 문서를 반환한 다음 커서를 닫습니다. 이 기능은 문서의 limit()과 최대 크기 내에 적합해야 하며, 커서 서버 측을 종료하기 위해 요청을 보낼 필요가 없습니다. 커서가 반복된 후에도 배치 크기를 변경할 수 있으며, 이 경우 다음 배치 검색에 설정이 적용됩니다.

int/Integer

옵션 outputType=Mongo ideaerable 및 일괄 처리 크기가 있는 예:

from("direct:findAll")
    .setHeader(MongoDbConstants.BATCH_SIZE).constant(10)
    .setHeader(MongoDbConstants.CRITERIA, Filters.eq("name", "Raul Kripalani"))
    .to("mongodb3:myDb?database=flights&collection=tickets&operation=findAll&outputType=MongoIterable")
    .to("mock:resultFindAll");

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

헤더 키빠른 상수설명 (MongoDB API doc에서 추출)데이터 유형

CamelMongoDbResultTotalSize

MongoDbConstants.RESULT_TOTAL_SIZE

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

int/Integer

CamelMongoDbResultPageSize

MongoDbConstants.RESULT_PAGE_SIZE

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

int/Integer

작은 정보

선택적 매개변수를 지원합니다. 이 작업을 통해 프로젝션 및/또는 sort 절을 지정할 수 있습니다. 선택적 매개변수 지정을 참조하십시오.

229.6.1.4. count

컬렉션의 총 오브젝트 수를 반환하고 OUT 메시지 본문으로 Long을 반환합니다.
다음 예제에서는 "dynamicECDHEName" 컬렉션의 레코드 수를 계산합니다. 역동성이 활성화되는 방식을 확인하고 결과적으로 "notableScientists" 컬렉션에 대해 작업이 실행되지 않지만 "dynamicECDHEName" 컬렉션에 대해 실행됩니다.

// from("direct:count").to("mongodb3: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);

쿼리 개체를 제공할 수 있습니다. CamelMongoDbCr itefrontend 헤더가 null인 경우 쿼리 오브젝트가 추출된 메시지 본문입니다. 즉 Bson 유형으로 변환하거나 Bson 으로 변환할 수 있어야 하는 경우 이 기준과 일치하는 문서 양을 반환합니다.  

Document query = ...
Long count = template.requestBodyAndHeader("direct:count", query, MongoDbConstants.COLLECTION, "dynamicCollectionName");

229.6.1.5. 필드 필터 지정 (프로젝트)

쿼리 작업은 기본적으로 일치하는 오브젝트를 전체(모든 필드 포함)에서 반환합니다. 문서가 크고 해당 필드의 하위 집합만 검색해야 하는 경우 CamelMongoDbFieldsProjection 헤더, MongoDbConstants.FIELDS_PROJECTION 에서 관련 Bson (또는 유형 변환 가능을 Bson으로 변환 가능)을 설정하여 모든 쿼리 작업에서 필드 필터를 지정할 수 있습니다.

다음은 MongoDB의 Projections 를 사용하여 Bson 생성을 단순화하는 예입니다. _idField 를 제외한 모든 필드를 검색합니다. :

// route: from("direct:findAll").to("mongodb3:myDb?database=flights&collection=tickets&operation=findAll")
Bson fieldProjection = Projection.exclude("_id", "boringField");
Object result = template.requestBodyAndHeader("direct:findAll", ObjectUtils.NULL, MongoDbConstants.FIELDS_PROJECTION, fieldProjection);

다음은 MongoDB의 Projections 를 사용하여 Bson 생성을 단순화하는 예입니다. _idField 를 제외한 모든 필드를 검색합니다. :

// route: from("direct:findAll").to("mongodb3:myDb?database=flights&collection=tickets&operation=findAll")
Bson fieldProjection = Projection.exclude("_id", "boringField");
Object result = template.requestBodyAndHeader("direct:findAll", ObjectUtils.NULL, MongoDbConstants.FIELDS_PROJECTION, fieldProjection);

229.6.1.6. sort 절 지정

MongoDB의 Sorts 를 사용하여 Bson 생성을 단순화하는 특정 필드의 정렬에 따라 컬렉션에서 min/max 레코드를 가져와야 하는 경우가 많습니다. _idField 를 제외한 모든 필드를 검색합니다. :

// route: from("direct:findAll").to("mongodb3:myDb?database=flights&collection=tickets&operation=findAll")
Bson sorts = Sorts.descending("_id");
Object result = template.requestBodyAndHeader("direct:findAll", ObjectUtils.NULL, MongoDbConstants.SORT_BY, sorts);

Camel 경로에서 SORT_BY 헤더는 findOneByQuery 작업과 함께 사용하여 동일한 결과를 얻을 수 있습니다. ECDHEELDS_PROJECTION 헤더도 지정되면 작업에서 다른 구성 요소(예: MyBatis query)로 직접 전달할 수 있는 단일 필드/값 쌍을 반환합니다. 이 예제에서는 컬렉션에서 임시로 최신 문서를 가져오고 documentTimestamp 필드를 기반으로 결과를 단일 필드로 줄이는 방법을 보여줍니다.

.from("direct:someTriggeringEvent")
.setHeader(MongoDbConstants.SORT_BY).constant(Sorts.descending("documentTimestamp"))
.setHeader(MongoDbConstants.FIELDS_PROJECTION).constant(Projection.include("documentTimestamp"))
.setBody().constant("{}")
.to("mongodb3:myDb?database=local&collection=myDemoCollection&operation=findOneByQuery")
.to("direct:aMyBatisParameterizedSelect")
;

229.6.2. 생성/업데이트 작업

229.6.2.1. insert

IN 메시지 본문에서 가져온 MongoDB 컬렉션에 새 오브젝트를 삽입합니다. 유형 변환은 문서 또는 목록으로 변환하려고 합니다.
두 가지 모드가 지원됩니다. 단일 삽입과 여러 삽입이 지원됩니다. 여러 삽입의 경우 끝점은 모든 유형의 List, Array 또는 Collections의 오브젝트가 있는 경우 또는 -문으로 변환할 수 있습니다. 예제:

from("direct:insert")
    .to("mongodb3:myDb?database=flights&collection=tickets&operation=insert");

이 작업은 WriteResult를 반환하며 WriteConcern 또는 invokeGetLastError 옵션 값에 따라 getLastError() 가 이미 호출되어 있습니다. 쓰기 작업의 궁극적인 결과에 액세스하려면 WriteResult 에서 getLastError() 또는 getCachedLastError() 를 호출하여 CommandResult 를 검색해야 합니다. 그런 다음 CommandResult.ECDHE() , CommandResult.getErrorMessage() 및/또는 CommandResult.getException() 을 호출하여 결과를 확인할 수 있습니다.

새 개체의 _id 는 컬렉션에서 고유해야 합니다. 값을 지정하지 않으면 MongoDB가 자동으로 값을 생성합니다. 그러나 이를 지정하고 고유하지 않은 경우 삽입 작업이 실패합니다(및 Camel의 경우 알림을 받으려면 invokeGetLastError를 활성화하거나 쓰기 결과를 기다리는 WriteConcern을 설정해야 합니다).

이는 구성 요소의 제한 사항은 아니지만 처리량 향상을 위해 MongoDB에서 작동하는 방법입니다. 사용자 지정 _id 를 사용하는 경우 애플리케이션 수준에서 고유해야 합니다(따라서도 좋습니다).

삽입된 레코드의 OID는 CamelMongoOid 키(MongoDbConstants.OID 상수) 아래의 메시지 헤더에 저장됩니다. 저장된 값은 여러 레코드가 삽입된 경우 단일 삽입 또는 java.util.List< org.bson.types.ObjectId >의 경우 org.bson.types.ObjectId 입니다.

MongoDB Java Driver 3.x에서 insertOne 및 insertMany 작업 반환 void. Camel 삽입 작업에서는 삽입된 문서 또는 문서 목록을 반환합니다. 필요한 경우 각 문서는 새 OID에 의해 업데이트됩니다.

229.6.2.2. save

save 작업은 upsert (UPdate, inSERT) 작업과 동일합니다. 여기서 레코드가 업데이트되고 존재하지 않는 경우 모두 하나의 원자 작업으로 삽입됩니다. MongoDB는 _id 필드를 기반으로 일치를 수행합니다.

업데이트의 경우 오브젝트가 완전히 교체되고 MongoDB의 $modifiers 사용은 허용되지 않습니다. 따라서 이미 존재하는 경우 오브젝트를 조작하려면 다음 두 가지 옵션이 있습니다.

  1. 쿼리를 수행하여 먼저 전체 오브젝트를 모든 필드(유효하지 않음)와 함께 검색하고 Camel 내부에서 변경한 다음 저장합니다.
  2. 대신 서버 측에서 업데이트를 실행하는 $modifiers 와 함께 업데이트 작업을 사용합니다. upsert 플래그를 활성화할 수 있습니다. 이 경우 삽입이 필요한 경우 MongoDB는 필터 쿼리 오브젝트에 $modifiers를 적용하여 결과를 삽입합니다.

저장할 문서에 _id 속성이 포함되어 있지 않으면 작업이 삽입되고 새 _id created가 CamelMongoOid 헤더에 배치됩니다.

예를 들면 다음과 같습니다.

from("direct:insert")
    .to("mongodb3:myDb?database=flights&collection=tickets&operation=save");

229.6.2.3. update

컬렉션에서 하나 이상의 레코드를 업데이트합니다. 필터 쿼리 및 업데이트 규칙이 필요합니다.

MongoDBConstants.CRITERIA 헤더를 Bson 으로 사용하여 필터를 정의하고 업데이트 규칙을ECDHE에서 Bson 으로 정의할 수 있습니다.

참고

강화 후 업데이트 . MongoDBConstants.CRITERIA 헤더를 Bson 으로 사용하여 필터를 정의하는 동안 업데이트하기 전에 mongodb를 쿼리하여 mongodb를 쿼리해야 하지만 집계 전략과 함께 보강된 패턴을 사용하는 경우 집계 중에 결과 comel 교환에서 제거해야 합니다. mongodb 생산자 엔드포인트에 comel exchange를 보내기 전에 집계 및/또는 MongoDBConstants.CRITERIA 헤더를 정의하는 동안 이 헤더를 제거하지 않으면 mongodb를 업데이트하는 동안 잘못된 camel exchange 페이로드를 사용할 수 있습니다.

두 번째 방법은 정확히 2개의 요소를 포함하는 IN 메시지 본문으로 List<Bson>이 필요합니다.

  • 요소 1(인덱스 0) 필터 쿼리는 일반적인 쿼리 오브젝트와 동일하게 영향을 받는 오브젝트를 결정합니다.
  • 요소 2(인덱스 1) 일치하는 오브젝트가 업데이트되는 업데이트 규칙입니다. MongoDB의 모든 수정자 작업이 지원됩니다.
참고

Multiupdates 입니다. 기본적으로 MongoDB는 여러 오브젝트가 필터 쿼리와 일치하는 경우에도 1개의 오브젝트만 업데이트합니다. MongoDB에 일치하는 모든 레코드를 업데이트하도록 지시하려면 CamelMongoDbMultiUpdate IN 메시지 헤더를 true 로 설정합니다.

CamelMongoDbRecordsAffected 가 포함된 헤더가 반환되며 (MongoDbConstants.RECORDS_AFFECTED 상수)에 업데이트되는 레코드 수( WriteResult.getN()에서 복사됨)가 반환됩니다.

다음 IN 메시지 헤더를 지원합니다.

헤더 키빠른 상수설명 (MongoDB API doc에서 추출)예상 유형

CamelMongoDbMultiUpdate

MongoDbConstants.MULTIUPDATE

업데이트가 일치하는 모든 오브젝트에 적용해야 하는 경우입니다. http://www.mongodb.org/display/DOCS/Atomic+Operations을 참조하십시오.

boolean/Boolean

CamelMongoDbUpsert

MongoDbConstants.UPSERT

데이터베이스가 없는 경우 요소를 생성해야 하는 경우

boolean/Boolean

예를 들어 다음은 "scientist" 필드의 값을 "Darwin"으로 설정하여 filterField 필드가 true인 모든 레코드를 업데이트합니다.

// route: from("direct:update").to("mongodb3:myDb?database=science&collection=notableScientists&operation=update");
Bson filterField = Filters.eq("filterField", true);
String updateObj = Updates.set("scientist", "Darwin");
Object result = template.requestBodyAndHeader("direct:update", new Bson[] {filterField, Document.parse(updateObj)}, MongoDbConstants.MULTIUPDATE, true);
// route: from("direct:update").to("mongodb3:myDb?database=science&collection=notableScientists&operation=update");
Maps<String, Object> headers = new HashMap<>(2);
headers.add(MongoDbConstants.MULTIUPDATE, true);
headers.add(MongoDbConstants.FIELDS_FILTER, Filters.eq("filterField", true));
String updateObj = Updates.set("scientist", "Darwin");;
Object result = template.requestBodyAndHeaders("direct:update", updateObj, headers);
// route: from("direct:update").to("mongodb3:myDb?database=science&collection=notableScientists&operation=update");
String updateObj = "[{\"filterField\": true}, {\"$set\", {\"scientist\", \"Darwin\"}}]";
Object result = template.requestBodyAndHeader("direct:update", updateObj, MongoDbConstants.MULTIUPDATE, true);

229.6.3. 삭제 작업

229.6.3.1. 제거

컬렉션에서 일치하는 레코드를 제거합니다. IN 메시지 본문이 제거 필터 쿼리 역할을 하며 DBObject 유형 또는 변환 가능한 유형이 될 것으로 예상됩니다.
다음 예제에서는 'conditionField' 필드가 true와 같으며, 과학 데이터베이스 (notableScientists) 컬렉션에서 모든 개체를 제거합니다.

// route: from("direct:remove").to("mongodb3:myDb?database=science&collection=notableScientists&operation=remove");
Bson conditionField = Filters.eq("conditionField", true);
Object result = template.requestBody("direct:remove", conditionField);

CamelMongoDbRecordsAffected 가 있는 헤더가 반환됨(MongoDbConstants.RECORDS_AFFECTED 상수)이며 int 유형으로 삭제된 레코드 수( WriteResult.getN()에서 인용됨)가 포함됩니다.

229.6.4. 대규모 쓰기 작업

229.6.4.1. bulkWrite

Camel 2.21에서 사용 가능

실행 순서에 대한 제어를 사용하여 대량으로 쓰기 작업을 수행합니다. 삽입, 업데이트 및 삭제 작업에 대한 명령이 포함된 IN 메시지 본문으로 List<WriteModel<Document 199)가 필요합니다.

다음 예제에서는 "scientist" 필드의 값을 "Marie Curie"로 설정하고 id "3"으로 레코드를 삭제하여 새로운 "Pierre Curie", id "5"로 레코드를 업데이트합니다.

// route: from("direct:bulkWrite").to("mongodb:myDb?database=science&collection=notableScientists&operation=bulkWrite");
List<WriteModel<Document>> bulkOperations = Arrays.asList(
            new InsertOneModel<>(new Document("scientist", "Pierre Curie")),
            new UpdateOneModel<>(new Document("_id", "5"),
                                 new Document("$set", new Document("scientist", "Marie Curie"))),
            new DeleteOneModel<>(new Document("_id", "3")));

BulkWriteResult result = template.requestBody("direct:bulkWrite", bulkOperations, BulkWriteResult.class);

기본적으로 작업은 목록의 나머지 쓰기 작업을 처리하지 않고 첫 번째 쓰기 오류에서 순서대로 실행되고 중단됩니다. MongoDB에서 목록의 나머지 쓰기 작업을 계속 처리하도록 지시하려면 CamelMongoDbBulkOrdered IN 메시지 헤더를 false 로 설정합니다. 순서가 지정되지 않은 작업은 병렬로 실행되며 이 동작은 보장되지 않습니다.

헤더 키빠른 상수설명 (MongoDB API doc에서 추출)예상 유형

CamelMongoDbBulkOrdered

MongoDbConstants.BULK_ORDERED

순서가 지정되지 않은 작업 실행 또는 정렬되지 않은 작업을 수행합니다. 기본값은 true입니다.

boolean/Boolean

229.6.5. 기타 작업

229.6.5.1. 집계

본문에 포함된 지정된 파이프라인으로 집계를 수행합니다. 집계는 길고 많은 작업이 될 수 있습니다. 주의해서 사용하십시오.

// route: from("direct:aggregate").to("mongodb3:myDb?database=science&collection=notableScientists&operation=aggregate");
List<Bson> aggregate = Arrays.asList(match(or(eq("scientist", "Darwin"), eq("scientist",
        group("$scientist", sum("count", 1)));
from("direct:aggregate")
    .setBody().constant(aggregate)
    .to("mongodb3:myDb?database=science&collection=notableScientists&operation=aggregate")
    .to("mock:resultAggregate");

다음 IN 메시지 헤더를 지원합니다.

헤더 키빠른 상수설명 (MongoDB API doc에서 추출)예상 유형

CamelMongoDbBatchSize

MongoDbConstants.BATCH_SIZE

일괄 처리당 반환할 문서 수를 설정합니다.

int/Integer

CamelMongoDbAllowDiskUse

MongoDbConstants.ALLOW_DISK_USE

집계 파이프라인 단계를 활성화하여 임시 파일에 데이터를 쓸 수 있습니다.

boolean/Boolean

기본적으로 모든 결과 목록이 반환됩니다. 이는 결과 크기에 따라 메모리에 무거울 수 있습니다. 더 안전한 대안은 outputType=Mongo justerable을 설정하는 것입니다. 다음 프로세서는 메시지 본문에서 iterable을 보고 결과를 하나씩 단계별로 진행할 수 있도록 합니다. 따라서 일괄 크기를 설정하고 iterable을 반환하면 결과를 효율적으로 검색하고 처리할 수 있습니다.

outputType=DBCursor (Camel 2.21+)를 위 헤더를 설정하는 것보다 더 간단할 수 있는 엔드포인트 옵션으로 서버에서 반환된 문서를 "스트림"할 수도 있습니다. 이렇게 하면 몽고 쉘 내에서 aggregate()를 실행하는 것처럼 몽고 드라이버의 DBCursor를 사용하여 경로를 반복할 수 있습니다. 기본적으로 이 구성 요소는 이 옵션 없이 드라이버의 커서에 있는 문서를 List로 로드하고 이를 경로로 반환하므로 많은 메모리 내 오브젝트가 발생할 수 있습니다. DBCursor를 사용하면 일치하는 문서 수를 요구하지 않습니다. 자세한 내용은 MongoDB 설명서 사이트를 참조하십시오.

옵션 outputType=Mongo monthserable 및 배치 크기가 있는 예:

// route: from("direct:aggregate").to("mongodb3:myDb?database=science&collection=notableScientists&operation=aggregate&outputType=MongoIterable");
List<Bson> aggregate = Arrays.asList(match(or(eq("scientist", "Darwin"), eq("scientist",
        group("$scientist", sum("count", 1)));
from("direct:aggregate")
    .setHeader(MongoDbConstants.BATCH_SIZE).constant(10)
    .setBody().constant(aggregate)
    .to("mongodb3:myDb?database=science&collection=notableScientists&operation=aggregate&outputType=MongoIterable")
    .split(body())
    .streaming()
    .to("mock:resultAggregate");

.split(body()) 을 호출하는 것만으로는 해당 항목을 한 번에 하나씩 보낼 수 있지만 모든 항목이 메모리에 먼저 로드됩니다. 따라서 .streaming() 을 호출하면 일괄 처리로 데이터를 메모리에 로드해야 합니다.

229.6.5.2. getDbStats

MongoDB 쉘에서 db.stats() 명령을 실행하는 것과 동등한 데이터베이스에 대한 유용한 통계 수를 표시합니다.
예를 들면 다음과 같습니다.

> db.stats();
{
    "db" : "test",
    "collections" : 7,
    "objects" : 719,
    "avgObjSize" : 59.73296244784423,
    "dataSize" : 42948,
    "storageSize" : 1000058880,
    "numExtents" : 9,
    "indexes" : 4,
    "indexSize" : 32704,
    "fileSize" : 1275068416,
    "nsSizeMB" : 16,
    "ok" : 1
}

사용 예:

// from("direct:getDbStats").to("mongodb3:myDb?database=flights&collection=tickets&operation=getDbStats");
Object result = template.requestBody("direct:getDbStats", "irrelevantBody");
assertTrue("Result is not of type Document", result instanceof Document);

작업은 OUT 메시지 본문에 있는 문서 형태로 쉘에 표시된 것과 유사한 데이터 구조를 반환합니다.

229.6.5.3. getColStats

MongoDB 쉘에서 db.collection.stats() 명령을 실행하는 것과 동일합니다. 이 명령은 컬렉션에 대한 유용한 통계 정보를 표시합니다.
예를 들면 다음과 같습니다.

> db.camelTest.stats();
{
    "ns" : "test.camelTest",
    "count" : 100,
    "size" : 5792,
    "avgObjSize" : 57.92,
    "storageSize" : 20480,
    "numExtents" : 2,
    "nindexes" : 1,
    "lastExtentSize" : 16384,
    "paddingFactor" : 1,
    "flags" : 1,
    "totalIndexSize" : 8176,
    "indexSizes" : {
        "_id_" : 8176
    },
    "ok" : 1
}

사용 예:

// from("direct:getColStats").to("mongodb3:myDb?database=flights&collection=tickets&operation=getColStats");
Object result = template.requestBody("direct:getColStats", "irrelevantBody");
assertTrue("Result is not of type Document", result instanceof Document);

작업은 OUT 메시지 본문에 있는 문서 형태로 쉘에 표시된 것과 유사한 데이터 구조를 반환합니다.

229.6.5.4. command

데이터베이스에서 명령으로 본문을 실행합니다. admin 작업에는 호스트 정보, 복제 또는 샤딩 상태를 가져오는 데 사용합니다.

Collection 매개변수는 이 작업에 사용되지 않습니다.

// route: from("command").to("mongodb3:myDb?database=science&operation=command");
DBObject commandBody = new BasicDBObject("hostInfo", "1");
Object result = template.requestBody("direct:command", commandBody);

229.6.6. 동적 작업

Exchange는 MongoDbConstants.OPERATION_HEADER 상수로 정의된 CamelMongoDbOperation 헤더를 설정하여 끝점의 고정 작업을 덮어쓸 수 있습니다.
지원되는 값은 MongoDbOperationECDHE에 의해 결정되며 엔드포인트 URI의 작업 매개 변수에 대해 허용된 값과 일치합니다.

예를 들면 다음과 같습니다.

// from("direct:insert").to("mongodb3:myDb?database=flights&collection=tickets&operation=insert");
Object result = template.requestBodyAndHeader("direct:insert", "irrelevantBody", MongoDbConstants.OPERATION_HEADER, "count");
assertTrue("Result is not of type Long", result instanceof Long);
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.