34.7.2. 创建/更新操作
34.7.2.1. insert
将一个新的对象插入到 MongoDB 集合中,从 IN 消息正文获取。类型转换试图将其转换为 文档或
列表 。
支持两种模式:单个插入和多个插入。对于多个插入,端点将预期是任何类型的对象的 List、Array 或 Collections,只要它们是 - 或可以转换为 - 文档
。例如:
from("direct:insert") .to("mongodb:myDb?database=flights&collection=tickets&operation=insert");
该操作将返回 WriteResult,并根据 WriteConcern
或 invokeGetLastError
选项的值被 getLastError()
调用。如果要访问写入操作的最终结果,则需要通过在 WriteResult
上调用 getLastError()
或 getCachedLastError()
来检索 CommandResult
。然后,您可以通过调用 CommandResult.ok()、
和/或 CommandResult.
getErrorMessage()CommandResult.getException()
来验证结果。
请注意,新对象的 _id
在集合中必须是唯一的。如果没有指定值,MongoDB 将自动为您生成一个值。但是,如果您指定它且不唯一,插入操作将失败(对于 Camel 需要通知,您需要启用调用GetLastError 或设置 WriteConcern 会等待写结果)。
这并不是组件的限制,而是在 MongoDB 中处理更高的吞吐量。如果您使用自定义 _id
,则预期在应用程序级别保持唯一性(而且这是个好的做法)。
插入记录的 OID 存储在 CamelMongoOid
键下的邮件标头中(MongoDbConstants.OID
constant)。存储的值是 org.bson.types.ObjectId
用于单个插入或 java.util.List<org.bson.types.ObjectId
>(如果有多个记录)。
在 MongoDB Java Driver 3.x 中插入One 和 insertMany 操作返回 void。Camel 插入操作会返回插入文档或文档列表。请注意,每个文档都由新的 OID 更新(如果需要)。