【问题标题】:Upsert of collection in MongoDB, using Java.使用 Java 在 MongoDB 中进行集合更新。
【发布时间】:2017-11-29 00:11:15
【问题描述】:
  1. 我正在使用 MongoDb 来存储集合
  2. 第一次围绕集合插入,没有任何其他考虑
  3. 在数据库中初始化数据后,应用程序的其余部分会在内存中的集合中进行更改,而不是在数据库中。
  4. 在某些情况下,我想“更新”数据库中的内存集合。
  5. 我想将整个内存集合发送到 DB,我需要“一些魔法”来仅更新那些在内存中发生变化的集合数据。

任何人都可以帮助我解决我正在寻找的“一些魔法”吗?

我正在使用 Java、Heroku、mLab:MongoDB 技术堆栈。

【问题讨论】:

    标签: java mongodb heroku


    【解决方案1】:

    假设in memory数据库是一个集合并且每个文档都有id,你可以使用MongoTemplateinsertAll方法来转储整个集合。它将保留未更改的文档并更新其他文档。

    upsert而言,你可以创建一个Query并使用MongoTemplateupsert方法,例如:

    Query query = new Query(Criteria.where("_id").is(my_id));
    mongoTemplate.upsert(query, document, Document.class, "collection_name");
    

    这是 insertAllupsert 方法的 javadoc。

    更新

    如果您使用的是核心 mongo-java-driver,那么您可以查看 thisthis SO 的答案来执行相同的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-07
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多