Я пытаюсь добавить комментарий к конкретному ответу, я пробовал разные способы, но комментарии всегда добавляются к родительскому вопросу, но не к ответу в этом вопросе.
Иерархия моей базы данных:
- Question1
- Comment1
- Комментарий2
- Answer1
- CommentForAnswer1
- Ответ2
Мои классы моделей
ВОПРОС.java
@Document(collection = "QUESTION")
public class QUESTION {
@Id
private String questionId;
private String questionHeader;
private String questionBody;
private String byUser; //username
private Instant postedAt;
private int upVotes;
private int downVotes;
private List<ANSWER> answerObj;
private List<COMMENT> commentObj;
ОТВЕТ.java
public class ANSWER {
private String answerId;
private String answerBody;
private String byUser; //username
private Instant postedAt;
private int upVotes;
private int downVotes;
private List<COMMENT> commentObj;
COMMENT.java
public class COMMENT {
private String commentId;
private String commentBody;
private String byUser; //username
private Instant postedAt;
private int upVotes;
private int downVotes;
контроллер
@PostMapping(value = "posts/{questionId}/add")
public ResponseEntity<?> postComment(@PathVariable String questionId,
@RequestParam(value = "answerId", defaultValue = "") String answerId,
@RequestBody PostCommentRequest postCommentRequest,
Authentication authentication) {
String username = authentication.getName();
PostCommentResponse postCommentResponse = postService.postAComment(postCommentRequest, username, questionId, answerId);
return ResponseEntity.ok().body(postCommentResponse.getMessage());
}
репозиторий
update.push("commentObj", comment);
try {
query.addCriteria(answerId.isEmpty() ?
(new Criteria("questionId").is(questionId)) :
(new Criteria("answerObj.answerId").is(answerId).andOperator(Criteria.where("questionId").is(questionId))));
mongoTemplate.updateFirst(query, update, QUESTION.class, QUESTION_COLLECTION);
return new PostCommentResponse("Successfully updated!", comment);
} catch (Exception e) {
return new PostCommentResponse("Failed to update, Reason: " + e.toString(), null);
}
Может ли кто-нибудь помочь мне выяснить критерии запроса, который может помещать объект в массив, который находится внутри другого массива объектов.
Изменить: MongoDB версии 4.0 (последняя)