Используя запрос критериев, я извлекаю документы из MongoDB. Мое требование здесь: я хочу обновить поле из значения родительского документа, запросив вложенный документ, используя критерии из Spring Data Mon go. Родительский документ - это комментарии, а вложенные документы - это ответы. Я могу получить список комментариев вместе с дополнительными документами, используя приведенный ниже код,
Data Set:
{
"_id" : ObjectId("5cb726937a7148376094d393"),
"_class" : "vzi.cpei.Comments",
"text" : "first comment on money control",
"replies" : [
{
"_id" : "3cfef1cd-e0da-4883-86a4-17b223639087",
"text" : "extract the traces",
"status" : true
},
{
"_id" : "3cfef1cd-e0da-4883-86a4-17b153690087",
"text" : "replied deiberate",
"status" : false
},
{
"_id" : "3cfef1cd-e0da-4883-86a4-17b153139087",
"text" : "Bgm",
"status" : true
}],
}
Response DTO:
public class CommentsDTO{
private String id;
private String text;
private List<Replies> replies;
private Integer totalReplies;
}
Код, написанный в Spring с использованием данных Spring mon go Criteria query,
Query query = new Query();
Criteria criteria =Criteria.where("_id").is(new ObjectId("5efe3d1f8a2ef008249f72d9"));
query.addCriteria(criteria);
List<Comments> comments = mongoOps.find(query,"Comments",
CommentsDTO.class);
return comments;
In результат Я хочу обновить поле repliesCount, указав общее количество ответов со статусом true, поэтому ожидаемый результат должен быть:
{
"_id" : ObjectId("5cb726937a7148376094d393"),
"_class" : "vzi.cpei.Comments",
"text" : "first comment on money control",
"totalReplies" : 2
"replies" : [
{
"_id" : "3cfef1cd-e0da-4883-86a4-17b223639087",
"text" : "extract the traces",
"status" : true
},
{
"_id" : "3cfef1cd-e0da-4883-86a4-17b153690087",
"text" : "replied deiberate",
"status" : false
},
{
"_id" : "3cfef1cd-e0da-4883-86a4-17b153139087",
"text" : "Bgm",
"status" : true
}],
}
Я совершенно не понимаю, где выполнять эту операцию во время выборки.