Как получить соответствующий элемент в массиве, используя метку времени или дату в реактивном Spring Mongodb - PullRequest
0 голосов
/ 01 января 2019

Сначала я пытаюсь получить все документы в коллекции, некоторые из них имеют массив объектов "events", который имеет поле свойства latestTimeStamp.

Пример данных:

[
{
    "_id": "5c1f7054b8fcd6574162a594",
    "userId": "35",
    "createdDate": "Sun Dec 23 15:24:04 GST 2018",
    "events": [
        {
            "latestTimeStamp": "2018-12-31T06:08:49.808Z"

        },
        {
            "latestTimeStamp": "2018-12-31T06:09:13.235Z"

        },
        {
            "latestTimeStamp": "2018-12-31T06:21:36.666Z"

        },
        {
            "latestTimeStamp": "2018-12-31T06:21:59.427Z"

        },
        {
            "latestTimeStamp": "2018-12-31T06:22:19.858Z"

        },
        {
            "latestTimeStamp": "2018-12-31T06:22:43.728Z"

        }
    ]
},
{
    "_id": "5c2875f9fc441802398b8925",
    "userId": "35",
    "createdDate": "Sun Dec 30 11:38:33 GST 2018",

    "events": [
        {
            "latestTimeStamp": null

        },
        {
            "latestTimeStamp": "Dec 30, 2018, 12:02:07 PM"

        },
        {
            "latestTimeStamp": "Dec 30, 2018, 12:03:08 PM"

        },
        {
            "latestTimeStamp": "Dec 31, 2018, 10:34:12 AM"

        },
        {
            "latestTimeStamp": "Dec 31, 2018, 10:35:21 AM"

        },
        {
            "latestTimeStamp": "Dec 31, 2018, 10:36:21 AM"

        }
    ]
},
{
    "_id": "5c28b985fc4418461a38ee79",
    "userId": "5c1894a44d27fc000634e200",
    "createdDate": "Sun Dec 30 16:26:45 GST 2018",

    "events": [
        {
            "latestTimeStamp": "2018-12-30T12:26:33.666251Z"

        },
        {
            "latestTimeStamp": "2018-12-30T12:28:56.035Z"

        },

        {
            "latestTimeStamp": "2018-12-30T13:00:01.212Z"
        },
        {
            "latestTimeStamp": "2018-12-30T13:01:16.183Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:28:47.290Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:30:03.035Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:26:16.981Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:27:31.072Z"


        },
        {
            "latestTimeStamp": "2018-12-30T13:32:31.278Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:31:15.812Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:33:46.519Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:35:02.424Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:36:15.887Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:37:31.641Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:38:46.618Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:40:01.975Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:41:48.499Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:44:08.981Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:44:17.154Z"
        },
        {
            "latestTimeStamp": "2018-12-30T13:44:23.837Z"

        },
        {
            "latestTimeStamp": "2018-12-30T13:44:20.137Z
        }
    ]
}]

Я хочу получить все документы в коллекциях и только один объект в массиве объектов "events" с помощью "latestTimeStamp"

Я былвозможность извлечь все документы только с одним объектом «событий» с помощью метода $ slice:

  Query query = new Query();
  query.fields().include("events").slice("events", -1,1);
  return reactiveMongoTemplate.find(query, Mission.class);

Мой вопрос: есть ли лучший способ добиться его извлечения?как максимальная дата или последняя отметка времени?или используя агрегат?

...