227.6.2.3. update

컬렉션에서 하나 이상의 레코드를 업데이트합니다. 정확히 2개의 요소를 포함하는 IN 메시지 본문으로 List<DBObject>가 필요합니다.

  • 요소 1 (index 0) ECDHE 필터 쿼리 ECDSA는 일반적인 쿼리 개체와 동일한 영향을 받을 개체를 결정합니다.
  • 요소 2 (index 1) 일치 오브젝트의 업데이트 규칙을 업데이트합니다. MongoDB 의 모든 수정자를 지원합니다.
참고

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

CamelMongoDbRecordsAffected 헤더가 반환되고(MongoDbConstants.RECORDS_AFFECTED 상수)로 업데이트된 레코드 수( WriteResult.getN()에서 분리됨)가 반환됩니다.

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

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

CamelMongoDbMultiUpdate

MongoDbConstants.MULTIUPDATE

업데이트가 모든 오브젝트 일치에 적용되는 경우. 자세한 내용은 http://www.mongodb.org/display/DOCS/Atomic+Operations

부울/Boolean

CamelMongoDbUpsert

MongoDbConstants.UPSERT

데이터베이스가 없는 경우 해당 요소를 만들어야 하는 경우If the database should create the element if it does not exist.

부울/Boolean

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

// route: from("direct:update").to("mongodb:myDb?database=science&collection=notableScientists&operation=update");
DBObject filterField = new BasicDBObject("filterField", true);
DBObject updateObj = new BasicDBObject("$set", new BasicDBObject("scientist", "Darwin"));
Object result = template.requestBodyAndHeader("direct:update", new Object[] {filterField, updateObj}, MongoDbConstants.MULTIUPDATE, true);