oauth2.0 @Query(“'ao. status':?0,'ao.otp_type':?1}”)void updateOtpStatus(String otpStatus,String otpType);查询给出空结果,可能是ans

zynd9foi  于 2023-10-15  发布在  其他
关注(0)|答案(1)|浏览(62)

给予一个mongodb查询,以更新名为“auth_otp”的数据库表中某些行的状态。它会将与所提供的otpStatus和otpType匹配的行的状态更改为“INACTIVE”
尝试了这个- @Query(“查询'ao. status':?0,'ao.otp_type':?1}”) void updateOtpStatus(String otpStatus,String otpType);
预期-需要更新行或更新数据

fwzugrvs

fwzugrvs1#

一般性评论:这看起来像是你试图同时合并一个命令(改变状态)和一个查询(检索状态)。这通常是不推荐的,但当然我不知道你的确切用例。
也就是说,如果您的查询位于扩展MongoRepository的存储库中,则可以执行保存、查找、删除、计数、存在等操作。(并使用实体的属性来自定义这些方法,请参见定义查询方法。
但是,如果你想利用更具体的MongoDB功能,如更新或更新,你最好使用MongoTemplateMongoOperations

@Component
public class RepositoryImpl {

    private final MongoTemplate mongoTemplate;

    public RepositoryImpl (MongoTemplate mongoTemplate) {
        this.mongoTemplate = mongoTemplate;
    }

    public void updateMulti(...) {
        Query query = new Query();
        query.addCriteria(...);
        Update update = new Update();
        update.set(...);
        UpdateResult updateResult = mongoTemplate.updateMulti(query, update, Entity.class);
    }
}

请注意,updateupdateMultiupsert不会返回更新的数据,但可以从UpdateResult获取modifiedCount。

相关问题