Spring Data和MongoDB存储库 - 如何创建更新查询?

Urb*_*leg 3 java spring mongodb spring-data spring-data-mongodb

我有以下jpa存储库:

   @Query("UPDATE PlayerAccount pa SET pa.password = ?3 WHERE pa.id = ?1 AND pa.password = ?2")
   @Modifying
   public int updatePasswordWithValidation(Long playerAccountId, String oldPasswordDB, String encodePassword);
Run Code Online (Sandbox Code Playgroud)

现在,我想为mongoDB存储库实现类似的更新查询:

@Query("update( { _id: ObjectId(' $1 ') }, { $set: { messageStatus: $2} })")
Run Code Online (Sandbox Code Playgroud)

但它不起作用.任何有关自定义mongo存储库更新如何显示的参考?

谢谢

Oli*_*ohm 6

MongoDB查询语言是一种仅查询语言.因此,没有更新查询这样的东西.如果需要在MongoDB之上使用Spring Data存储库执行专用更新,则需要一个自定义实现方法.

// Interface for custom functionality
interface SomeCustomRepository {
  void updateMethod(…);
}

// Custom implementation
class FooRepositoryImpl implements SomeCustomRepository {

  public void updateMethod(…) {
    mongoTemplate.update(…);
  }
}

// Core repository declaration combining CRUD functionality and custom stuff
interface FooRepository extends CrudRepository<Foo, ObjectId>, SomeCustomRepository {
  …
}
Run Code Online (Sandbox Code Playgroud)

参考文档中也描述了这种方法.