通过 Spring 数据 MongoDB 使用@Query 执行更新

Performing update using @Query via Spring Data MongoDB

我想直接更新 mongodb 并针对我的用例将 someflag 设置为 true 或 false。为了有效,我不想查询所有文档并设置 someflag 并将其保存回数据库。我只想直接在数据库上更新它,就像在 mongodb 终端上进行更新一样。

这是示例文档。注意:这些文档可以从 1 ~ N 编号,所以我需要有效地处理大数据

{
  _id: 60db378d0abb980372f06fc1
  someid: 23cad24fc5d0290f7d5274f5
  somedata: some data of mine
  flag: false
}

目前我正在我的存储库中执行 @Query 方法

@Query(value ="{someid: ?0}, {$set: {flag: false}}")
void updateFlag(String someid)

使用上面的语法,它不起作用,我总是在下面收到异常消息;

Failed to instantiate void using constructor NO_CONSTRUCTOR with arguments

如何在不查询所有这些文档并将其更新回数据库的情况下有效地执行直接更新?

使用 BulkOperations class (https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/BulkOperations.html)

示例代码: Spring Data Mongodb Bulk Operation Example