Hi there,
i’m new to NoSql and the nosql-queries.
I’m searching for a way to Group Data between 2 Eventtypes like login and logout.
I want to list all Logins and what happens until the User sends logout. Is there a way to do this Serverside?
How can i do this performant with MongoDB.
I’m using C# .net core 3.1 for developing.
Source:
[
{event: _id: '{5883E716-947B-4403-BF5D-B9C2BBED3177}', datetime: '2020-01-01T00:00:00', data:'{key:Username, Value:Username}', eventType: 'login'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532A}', datetime: '2020-01-01T01:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'add'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532C}', datetime: '2020-01-01T03:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'add'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532C}', datetime: '2020-01-01T03:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'edit'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532C}', datetime: '2020-01-01T03:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'add'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532B}', datetime: '2020-01-01T03:10:00', data:'{key:Username, Value:Username}', eventType: 'logout'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532D}', datetime: '2020-01-02T00:00:00', data:'{key:Username, Value:Username}', eventType: 'login'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532A}', datetime: '2020-01-02T01:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'edit'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532C}', datetime: '2020-01-02T03:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'add'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532C}', datetime: '2020-01-02T03:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'edit'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532C}', datetime: '2020-01-02T03:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'add'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532B}', datetime: '2020-01-02T03:10:00', data:'{key:Username, Value:Username}', eventType: 'logout'}
]
so the Result should be something like this:
[
{
Start:2020-01-01T00:00:00,
End:2020-01-01T03:10:00,
Entries:{
{event: _id: '{5883E716-947B-4403-BF5D-B9C2BBED3177}', datetime: '2020-01-01T00:00:00', data:'{key:Username, Value:Username}', eventType: 'login'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532A}', datetime: '2020-01-01T01:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'add'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532C}', datetime: '2020-01-01T03:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'add'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532C}', datetime: '2020-01-01T03:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'edit'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532C}', datetime: '2020-01-01T03:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'add'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532B}', datetime: '2020-01-01T03:10:00', data:'{key:Username, Value:Username}', eventType: 'logout'}
}
},{
Start:2020-01-02T00:00:00,
End:2020-01-02T03:10:00,
Entries:{
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532D}', datetime: '2020-01-02T00:00:00', data:'{key:Username, Value:Username}', eventType: 'login'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532A}', datetime: '2020-01-02T01:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'edit'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532C}', datetime: '2020-01-02T03:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'add'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532C}', datetime: '2020-01-02T03:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'edit'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532C}', datetime: '2020-01-02T03:00:00', data:'{key:Name, Value:AnyFirstName}', eventType: 'add'},
{event: _id: '{4008D4D7-9786-4C5F-8924-F05E9CC1532B}', datetime: '2020-01-02T03:10:00', data:'{key:Username, Value:Username}', eventType: 'logout'}
}
}
]
thank you so much
Thomas