gpt4 book ai didi

java - 如何在 spring-boot 中运行自定义 mongodb 查询

转载 作者:可可西里 更新时间:2023-11-01 10:41:00 26 4
gpt4 key购买 nike

我有一个 spring-boot 应用程序,我正在尝试使用它运行下面的查询。

db.userActivity.findAndModify(
{
query: { 'appId' : 1234, 'status' : 0},
update: { $inc: { 'status': 1 } }
});

我确实尝试过类似的方法但没有成功

public interface UserActivityRepository extends MongoRepository<UserActivity, String> {

/**
* Find all documents in the database
* @param appId
* @param status
* @return
*/
@Query("{ 'appId' : ?0, 'status' : ?1}")
public List<UserActivity> findAllDocuments(long appId, int status);

/**
* Find all documents by appId whose state is unread
* and marked them read after reading
* @param appId
* @return
*/
@Query("db.userActivity.findAndModify({ query: { 'appId' : ?0, 'status' : ?1}, update: { $inc: { 'status': 1 } } })")
public List<UserActivity> findAndUpdateAllUnreadDocuments(long appId, int status);
}

你能告诉我哪里做错了吗?

最佳答案

好吧,我应该承认我找不到使用自定义 mongo 查询更新文档的方法。但是,找到了一种使用 java8 流的方法。

 userActivityRepository.save(userActivityRepository.findAllDocuments(1234, 0)
.stream()
.peek((user) -> user.setStatus(user.getStatus() + 1))
.collect(Collectors.toList()));

以上语句使用userActivityRepository.findAllDocuments用于获取具有条件的记录然后使用 OOTB MongoRepository save(Iterable<S> entites)更新文档的方法。

代替$inc增加了 status字段。

这可能不是您所期望的,但如果您希望实现,这只是一个可能的解决方案。

希望对您有所帮助!

关于java - 如何在 spring-boot 中运行自定义 mongodb 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44370112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com