作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 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/
我是一名优秀的程序员,十分优秀!