229.6.2. 创建/更新操作
229.6.2.1. insert
将新对象插入到 MongoDB 集合中,从 IN 消息正文获取。尝试键入转换,将其转换为 文档或
列表 。
支持两种模式: 插入和多个插入。对于多个插入,端点将期望一种任何类型的对象列表、数组或集合,只要它们为 - 或可以转换为 文档
。例如:
from("direct:insert") .to("mongodb3:myDb?database=flights&collection=tickets&operation=insert");
该操作将返回一个 WriteResult,具体取决于 WriteConcern
或 calls GetLastError
选项的值,getLastError ()
已被调用。如果想要访问写操作的最终结果,需要通过调用 WriteResult
的 getLastError ()
或 getCachedLastError ()
来检索 CommandResult
。然后,您可以通过调用 CommandResult.ok ()、命令
和/或 Result.
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 中,插入和插入Many 操作返回 void。Camel 插入操作会返回插入文档或文档列表。请注意,如果需要,每个文档都由新的 OID 进行更新。