38.7.2. 创建/更新操作


38.7.2.1. insert

将新对象插入到 MongoDB 集合中,从 IN 消息正文中获取。尝试将其转换为 文档或 列表
支持两种模式:单一插入和多个插入。对于多个插入,端点将预期一个任何类型的对象的列表、数组或集合,只要它们是 - 或可转换为 - 文档。例如:

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

该操作将返回 WriteResult,具体取决于 WriteConcerninvokeGetLastError 选项的值,getLastError () 将被称为 already 或 not。如果要访问写操作的 ultimate 结果,则需要通过在 Write Result 上调用 getLastError ()getCachedLastError () 来检索命令 结果。然后,您可以通过调用 CommandResult.ok (), CommandResult.getErrorMessage () 和/或 CommandResult.getException () 来验证结果。

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

这不是组件的限制,但它是 MongoDB 中如何实现更高的吞吐量。如果您使用自定义 _id,则应该确保应用程序级别是唯一的(这也是一个好的做法)。

插入记录的 OID 存储在 CamelMongoOid 密钥(MongoDbConstants.OID 常态)下的消息标头中。存储的值是 org.bson.types.ObjectId,用于单个插入,如果插入了多个记录,则为 java.util.List<org.bson.types.ObjectId >。

在 MongoDB Java Driver 3.x 中,insertOne 和 insertMany 操作返回 void。Camel 插入操作返回插入文档或文档列表。请注意,如果需要,每个文档都由新的 OID 更新。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.