MongoDb - запрос - пустой результат, даже если он не пустой - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь написать несколько запросов агрегации для MongoDB. Я довольно новичок в этом, поэтому у меня проблема с поиском, где проблема здесь:

{
    "aggregate": "__collection__",
    "pipeline": [
        {
            "$unwind": "$studia"
        },
        {
            "$group": {
                "_id": {
                    "course": "$course",
                    "start": "$start"
                },
                "n": {
                    "$sum": 1
                }
            }
        },
        {
            "$sort": {
                "n": -1
            }
        }
    ]
}

Этот запрос генерируется Java. Следует подсчитать и суммировать, сколько раз начинаются какие-то курсы с какой-либо даты. Но это вернет пустой результат. Это не правильно.

Мои документы:

  {
        "_id": "1006262",
        "name": "Kugujalu",
        "lname": "Najahalovu",
        "studia": [
            {
                "id": "992",
                "start": {
                    "$date": "1998-08-31T22:00:00.000Z"
                },
                "end": {
                    "$date": "2003-06-10T22:00:00.000Z"
                },
               "course": "MCH",
            }
        ],
        "_class": "com.mongodb.MongoStudent"
    }
 {
        "_id": "1006263",
        "name": "Elkjuu",
        "lname": "Xjikuju",
        "studia": [
            {
                "id": "992",
                "start": {
                    "$date": "1998-08-31T22:00:00.000Z"
                },
                "end": {
                    "$date": "2003-06-10T22:00:00.000Z"
                },
               "course": "MCH",
            }
        ],
        "_class": "com.mongodb.MongoStudent"
    }

Итак, я хочу запрос, который возвращает результат как:

"start": 1998-08-31T22:00:00.000Z, "course": "MCH", "n": 2

Есть идеи, где проблема?

Это сгенерирует мне запрос:

Aggregation agg = newAggregation(unwind("studia"), group("course","start").count().as("n"),
                sort(Sort.Direction.DESC, "n"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...