Как прирост внутри проекции, MongoDB - PullRequest
0 голосов
/ 29 мая 2019

Я пишу запрос в MongoDB.Я хотел бы подсчитать каждую оценку по каждому отзыву, и если оценка превышает 6, увеличивается Grades_Count и GradesMoreThan6_Count, а если нет, то увеличивается только Grades_Count.Я не могу найти функцию $ inc, которую я мог бы использовать в проекции.Я ценю всю помощь.

{$project: {
    _id: 1,
    reviews: 1,
    Grades_Count: NumberInt(0),
    GradesMoreThan6_Count: {$map:
                {input: "$reviews", as: "review", in: 
                    {$switch:
                    {branches:[
                        {case: { $gt: [ "$$review.responsive", 6 ] }},then: Grades_Count++ AND GradesMoreThan6_Count++},
                        {case: { $gt: [ "$$review.helpful", 6 ] }},then: Grades_Count++ AND GradesMoreThan6_Count++},
                        {case: { $gt: [ "$$review.kind", 6 ] }},then: Grades_Count++ AND GradesMoreThan6_Count++}
                      ],
                      default: Grades_Count++}}},

Массив отзывов

"reviews" : [
        {
            "reviewer" : "Rachel Lynch", 
            "date" : "2018-08-20T09:51:41 -02:00", 
            "cleanliness" : NumberInt(7), 
            "location" : NumberInt(3), 
            "food" : NumberInt(8)
        }, 
        {
            "reviewer" : "Cynthia Wade", 
            "date" : "2018-07-06T08:48:09 -02:00", 
            "cleanliness" : NumberInt(8), 
            "location" : NumberInt(4), 
            "food" : NumberInt(1)
        }, 
        {
            "reviewer" : "Lowery Bright", 
            "date" : "2016-07-06T01:24:40 -02:00", 
            "cleanliness" : NumberInt(1), 
            "location" : NumberInt(1), 
            "food" : NumberInt(1)
        }, 
        {
            "reviewer" : "Amy Frederick", 
            "date" : "2018-07-03T08:31:27 -02:00", 
            "cleanliness" : NumberInt(7), 
            "location" : NumberInt(4), 
            "food" : NumberInt(6)
        }, 
        {
            "reviewer" : "Baird Kim", 
            "date" : "2016-10-22T04:34:46 -02:00", 
            "cleanliness" : NumberInt(9), 
            "location" : NumberInt(3), 
            "food" : NumberInt(6)
        }
    ]
...