当前位置: 首页 > 知识库问答 >
问题:

updateFirst方法不总是保存对象

况博容
2023-03-14

Spring Mongo模板的updateFirst方法并不总是按照预期更新Mongo Db集合

@Override
public void updateTable(Source source, Table table) {
    log.debug("updating existing table " + table.getTableId() + " on source " + source.getSourceId());
    source.setStatus(SourceStatus.InProcess);
    Query q = query(where("_id").is(source.getId()).and("deleted").is(false).and("tables._id").is(table.getId()));
    Update u = update("tables.$", table);
    u.set("lastModifiedAt", source.getLastModifiedAt()).set("lastModifiedBy",
            source.getLastModifiedBy()).set("errorInObject", source.isErrorInObject()).set(
            "errorInChildObject", source.isErrorInChildObject()).set("errors", source.getErrors()).set(
            "failedFields", source.getFailedFields()).set("status",source.getStatus());
    template.updateFirst(q, u, Source.class);
}

如果需要,可以提供更多的信息。

共有1个答案

叶煌
2023-03-14

我试图深入挖掘这个问题,并看到当我向Db发射update命令时会出现这个问题,而这些命令之间没有空隙,其中一些是如何中断MongoDB的队列来处理更新的,而一些更新是被写入的。

因此,在调用updateFirst方法之前,我为每个更新请求添加了500 ms延迟,这就解决了这个问题,现在更新一直都被保留,即使更新请求非常频繁,也有足够的时间处理更新。

 类似资料:
  • 本文向大家介绍jQuery中判断对象是否存在的方法汇总,包括了jQuery中判断对象是否存在的方法汇总的使用技巧和注意事项,需要的朋友参考一下 如果是下面的 jQuery 代码判断一个对象是否存在,是不能用的。 因为 $(“#id”) 不管对象是否存在都会返回 object 。 正确使用判断对象是否存在应该用: 使用 jQuery 对象的属性 length 来判断,如果 > 0 就存在。 或者 或

  • 在android中,我很难将对象的ArrayList保存到文件中。我希望能够读取这些对象,并对每个对象调用一个方法来获取它们的一个属性。这是对象类 } 在我的活动中,我接受输入并创建一个新的事务对象。然后将事务对象添加到ArrayList中。我想将ArrayList保存到一个文件中,并能够从其他活动访问ArrayList。在这个不同的活动中,我想访问并调用ArrayList中每个对象的,以创建一个

  • 我试图对模型的对象调用方法来更新数据库中的特定资源,但当我在api url上发送POST请求时,会出现此错误 方法照明\数据库\雄辩\集合::保存不存在。 我也尝试调用方法,但同样的错误。 编辑代码: 第一行返回响应和正确响应。 和 我还试图调用或方法来删除资源,但它也会给出相同的错误 BadMethodCallException:方法Illumb\Database\Eloquent\Collec

  • 如何用额外的列保存多对多映射对象?专列为“审批”。对于多对多注释,我只调用了setUsersDocuments(users),它工作正常...我怎样才能使它工作与额外的列? 文件 用户类 主键 多对多表 正在保存单据 编辑:unsuccessfull保存对象-Document.GetDocumentsForUsers().Add(userDocuments)null. 编辑:错误 null

  • 在javadoc中有一个类模式中的代码示例,我不理解它的概念。 编译方法是静态的,并保存到类模式的对象中。这是如何工作的? 方法匹配器从实例p的对象调用,并存储到类型匹配器的变量中。这是如何工作的?