227.6.2. 创建/更新操作

227.6.2.1. insert

将一个新的对象插入到 MongoDB 集合中,从 IN 消息正文获取。尝试键入转换,把它换为 DBObject 或一个列表。
支持两种模式:单个插入和多个插入。对于多个插入,端点将期望一种任何类型的对象列表、数组或集合,只要它们为 - 或可以转换为 - DBObject。所有对象都被插入一次。端点将根据输入智能地决定调用(单或多个插入)哪些后端操作。

例如:

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

该操作将返回 WriteResult,并根据 WriteConcerninvokeGetLastError 选项的值被 getLastError() 调用。如果要访问写入操作的最终结果,则需要通过在 WriteResult 上调用 getLastError()getCachedLastError() 来检索 CommandResult。然后,您可以通过调用 CommandResult.ok()、CommandResult. getErrorMessage() 和/或 CommandResult.getException() 来验证结果。

请注意,新对象的 _id 在集合中必须是唯一的。如果没有指定值,MongoDB 将自动为您生成一个值。但是,如果您指定它且不唯一,插入操作将失败(对于 Camel 需要通知,您需要启用调用GetLastError 或设置 WriteConcern 会等待写结果)。

这并不是组件的限制,而是在 MongoDB 中处理更高的吞吐量。如果您使用自定义 _id,则预期在应用程序级别保持唯一性(而且这是个好的做法)。

自 Camel 2.15 开始,插入记录的 OID 存储在 CamelMongoOid 键下的消息标头中(MongoDbConstants.OID constant)。存储的值是 org.bson.types.ObjectId,用于单个插入或 java.util.List<org.bson.types.ObjectId&gt; (如果插入多个记录)。