227.6.2.3. update
更新集合中的一个或多个记录。需要 List<DBObject> 作为 IN 消息正文,该正文正好包含 2 个元素:
- 元素 1 (index 0) PromQL 过滤器查询 TOKEN 决定哪些对象会受到影响,与典型的查询对象相同
- 元素 2 (index 1)• 更新规则 WWN 如何更新匹配的对象。支持 MongoDB 中的所有 修饰符操作。
Multiupdates .默认情况下,即使多个对象与过滤器查询匹配,MongoDB 也会更新 1 对象。要指示 MongoDB 更新所有 匹配记录,请将 CamelMongoDbMultiUpdate
IN 消息标头设置为 true
。
将返回一个带有键 CamelMongoDbRecordsAffected
的标头(MgoDbConstants.RECORDS_AFFECTED
constant)以及更新的记录数(从 WriteResult.getN ()
中结束)。
支持以下 IN 消息标头:
标头密钥 | 快速持续 | 描述(从 MongoDB API doc中提取) | 预期类型 |
---|---|---|---|
|
| 如果更新应应用到匹配的所有对象。请查看 http://www.mongodb.org/display/DOCS/Atomic+Operations | 布尔值/Boolean |
|
| 如果数据库不存在,则应创建这个元素 | 布尔值/Boolean |
例如,以下命令将"科学家"字段的值设置为 "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);
// 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);