mongoTemplate 批量更新数组里面的值

try{
            
            Criteria fnLikesCriteria = Criteria.where("fnLikes.isRead").is(0);
          
            Criteria commentsCriteria = Criteria.where("comments.isRead").is(0);
             Query queryComments = null;
             Query queryFnLikes = null;
             Nbourhood nbourhood = null;
             Nbourhood nbourhoodFnLikes = null;
             Update update = null;
             Comments comments = null;
             FnLike fnLike = null;
            for(String id:idList){
                queryComments = new Query();
                queryFnLikes = new Query();
                queryComments.addCriteria(commentsCriteria.and("_id").is(id));
                queryFnLikes.addCriteria(fnLikesCriteria.and("_id").is(id));
                nbourhood = mongoTemplate.findOne(queryComments, Nbourhood.class);
                nbourhoodFnLikes = mongoTemplate.findOne(queryFnLikes, Nbourhood.class);
               
                if(nbourhoodFnLikes != null && nbourhoodFnLikes.getFnLikes() != null && nbourhoodFnLikes.getFnLikes().size() >0){
                    int fnLikesSize = nbourhoodFnLikes.getFnLikes().size();
                    update = new Update();
                    // 遍历更新
                    for (int i = 0; i < fnLikesSize; i++) {
                        fnLike = nbourhoodFnLikes.getFnLikes().get(i);
                        if(fnLike != null && fnLike.getIsRead() != null && fnLike.getIsRead() == 0){
                            // 设置状态
                            update.set("fnLikes." + i + ".isRead", 2);
                        }
                    }
                    mongoTemplate.updateMulti(queryFnLikes, update, Nbourhood.class);
                }
                if(nbourhood != null && nbourhood.getComments() != null && nbourhood.getComments().size() >0){
                    int commentsSize = nbourhood.getComments().size();
                    update = new Update();
                    // 遍历更新
                    for (int i = 0; i < commentsSize; i++) {
                        comments = nbourhood.getComments().get(i);
                        if(comments != null && comments.getIsRead() != null && comments.getIsRead() == 0){
                            // 设置已读状态
                            update.set("comments." + i + ".isRead", 2);
                        }
                    }
                    mongoTemplate.updateMulti(queryComments, update, Nbourhood.class);
                }
                    
                
            }
            
           
          
        }catch(Exception e){
            e.printStackTrace();
        }

你可能感兴趣的:(mongodb)