Как получить сформированный результат при агрегации mongodb? - PullRequest
0 голосов
/ 06 августа 2020

У меня есть требование, в котором я должен сгенерировать результат, как показано ниже:

USERID |     Screen ON  time    | Screen Off time
1      | 2020-04-29 11:27:04 AM | 2020-04-29 11:33:04 AM
2      | 2020-04-29 12:27:04 AM | 2020-04-29 12:33:04 AM
3      | 2020-04-29 13:27:04 AM | 2020-04-29 13:33:04 AM
4      | 2020-04-29 13:27:04 AM | 2020-04-29 14:33:04 AM
1      | 2020-04-29 14:27:04 AM | 2020-04-29 15:33:04 AM
6      | 2020-04-29 15:27:04 AM | 2020-04-29 16:33:04 AM
2      | 2020-04-29 16:27:04 AM | 2020-04-29 17:33:04 AM
7      | 2020-04-29 17:27:04 AM | 2020-04-29 19:33:04 AM

Пользовательские данные повторяются, поскольку пользователь использует устройство несколько раз в день,

Документ схемы, как сохраненные данные приведены ниже:

{
    "_id" : ObjectId("5eae9ffbc6a54e2bd0a9a3f5"),
    "user" : 1,
    "device" : 1 device,
    "type" : "sleepawake",
    "activity" : "Device Screen Off",
    "when" : ISODate("2020-05-03T07:58:36.000Z"),
    "createdAt" : ISODate("2020-05-03T10:42:03.083Z"),
    "__v" : 0
}

/* 2 */
{
    "_id" : ObjectId("5eae9ffbc6a54e2bd0a9a3f6"),
    "user" : 2,
    "device" : 2 device,
    "type" : "sleepawake",
    "activity" : "Device Wakes Up",
    "when" : ISODate("2020-05-03T07:58:54.000Z"),
    "createdAt" : ISODate("2020-05-03T10:42:03.084Z"),
    "__v" : 0
}

/* 3 */
{
    "_id" : ObjectId("5eae9ffbc6a54e2bd0a9a3f7"),
    "user" : 1,
    "device" : i device,
    "type" : "sleepawake",
    "activity" : "Device Screen Off",
    "when" : ISODate("2020-05-03T07:59:03.000Z"),
    "createdAt" : ISODate("2020-05-03T10:42:03.084Z"),
    "__v" : 0
}

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

Могу ли я каким-то образом сгенерировать такой результат?

Ожидаемый результат:

{
 user: 1,
 ScreenON: 2020-04-29 11:27:04 AM,
 ScreenOFF: 2020-04-29 11:42:27 AM
},
{
 user: 2,
 ScreenON: 2020-04-29 11:27:04 AM,
 ScreenOFF: 2020-04-29 11:42:27 AM
},
{
 user: 1,
 ScreenON: 2020-04-29 11:45:04 AM,
 ScreenOFF: 2020-04-29 11:52:27 AM
}
...