38.7.2.2. save


save 操作等同于一个 upsert (UPdate,inSERT)操作,记录将更新的位置,如果记录不存在,它将在一个原子操作中插入。MongoDB 将根据 _id 字段执行匹配。

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

  1. 执行查询,以便首先检索整个对象及其所有字段(效率不高),在 Camel 中更改它,然后保存它。
  2. 将 update 操作与 $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.