И оператор в критериях не работает должным образом для вложенных документов внутри агрегации Spring Data Mongo - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь получить общее количество ответов, для которых значения чтения для ответов верны. Но я получаю значение счетчика как 3, но ожидаемое значение равно 2 (поскольку только два значения чтения являются истинными) с помощью функции агрегации, доступной в Spring Data Mongo. Ниже приведен код, который я написал:

Aggregation sumOfRepliesAgg = newAggregation(match(new Criteria().andOperator(Criteria.where("replies.repliedUserId").is(userProfileId),Criteria.where("replies.read").is(true))),
        unwind("replies"), group("replies").count().as("repliesCount"),project("repliesCount"));
AggregationResults<Comments> totalRepliesCount = mongoOps.aggregate(sumOfRepliesAgg, "COMMENTS",Comments.class);
    return totalRepliesCount.getMappedResults().size();

Использование оператора AND внутри запроса критериев и прошло условие двух критериев, но не работает должным образом Ниже приведен пример набора данных:

{
"_id" : ObjectId("5c4ca7c94807e220ac5f7ec2"),
"_class" : "com.forum.api.domain.Comments",
"comment_data" : "logged by karthe99",
"totalReplies" : 2,
"replies" : [ 
    {
        "_id" : "b33a429f-b201-449b-962b-d589b7979cf0",
        "content" : "dasdsa",
        "createdDate" : ISODate("2019-01-26T18:33:10.674Z"),
        "repliedToUser" : "@karthe99",
        "repliedUserId" : "5bbc305950a1051dac1b1c96",
        "read" : false
    }, 
    {
        "_id" : "b886f8da-2643-4eca-9d8a-53f90777f492",
        "content" : "dasda",
        "createdDate" : ISODate("2019-01-26T18:33:15.461Z"),
        "repliedToUser" : "@karthe50",
        "repliedUserId" : "5c4bd8914807e208b8a4212b",
        "read" : true
    }, 
    {
        "_id" : "b56hy4rt-2343-8tgr-988a-c4f90598h492",
        "content" : "dasda",
        "createdDate" : ISODate("2019-01-26T18:33:15.461Z"),
        "repliedToUser" : "@karthe50",
        "repliedUserId" : "5c4bd8914807e208b8a4212b",
        "read" : true
    }
],
"last_modified_by" : "karthe99",
"last_modified_date" : ISODate("2019-01-26T18:32:41.394Z")
}

В чем заключается ошибка в запросе, который я написал?

...