34.7.2.2. save


save 操作等同于一个 upsert (UPdate、inSERT)操作,其中将会更新记录,如果不存在,则会插入一个 atomic 操作。MongoDB 将基于 _id 字段执行匹配。

请注意,如果更新,对象会被完全替换,且不允许使用 MongoDB 的 $mod ifier。因此,如果您要操作对象已存在,有两个选项:

  1. 执行查询以首先与所有对象一同检索整个对象(可能并不有效),在 Camel 内进行更改,然后保存它。
  2. 使用 $modifiers 的更新操作,其将在服务器端执行更新。您可以启用 upsert 标志。在这种情况下,MongoDB 将 $modifiers 应用到过滤器查询对象并插入结果。

如果要保存的文档不包含 _id 属性,则操作将是插入,并且创建的新的 _id 将放在 CamelMongoOid 标头中。

例如:

from("direct:insert")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=save");
// route: from("direct:insert").to("mongodb:myDb?database=flights&collection=tickets&operation=save");
org.bson.Document docForSave = new org.bson.Document();
docForSave.put("key", "value");
Object result = template.requestBody("direct:insert", docForSave);
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.