I get some data as blow:
{
"uid": 1056066,
"event_start_time": 1677207512684,
"event_end_time": 1677207512684,
"article_id": 5760884
}
// 2
{
"uid": 1056066,
"event_start_time": 1677210902918,
"event_end_time": 1677210902918,
"article_id": 5760884
}
// 3
{
"uid": 1056066,
"event_start_time": 1677211072966,
"event_end_time": 1677211072966,
"article_id": 5763688
}
// 4
{
"uid": 1056066,
"event_start_time": 1677217109856,
"event_end_time": 1677217109856,
"article_id": 5234061
}
// 5
{
"uid": 1056066,
"event_start_time": 1677217227239,
"event_end_time": 1677217227239,
"article_id": 5376768
}
// 6
{
"uid": 1056066,
"event_start_time": 1677217374833,
"event_end_time": 1677217374833,
"article_id": 4341130
}
I want calculate the same article_id’s count as a field into the each doc, Then i want take the first doc which have the same article_id (by event_end_time desc)
I’ve written those codes:
db.event_log.aggregate([
{$match: {uid: 1056066}},
{$project: {
_id: false,
uid: true,
article_id: '$event_info.article_id',
event_start_time: true, event_end_time: true
}
},
{$sort: {end_time: -1}}
])
this is goal data:
{
"uid": 1056066,
"event_start_time": 1677210902918,
"event_end_time": 1677210902918,
"article_id": 5760884
"size": 2
}
{
"uid": 1056066,
"event_start_time": 1677211072966,
"event_end_time": 1677211072966,
"article_id": 5763688
"size": 1
}
{
"uid": 1056066,
"event_start_time": 1677217109856,
"event_end_time": 1677217109856,
"article_id": 5234061
"size": 1
}
{
"uid": 1056066,
"event_start_time": 1677217227239,
"event_end_time": 1677217227239,
"article_id": 5376768
"size": 1
}
{
"uid": 1056066,
"event_start_time": 1677217374833,
"event_end_time": 1677217374833,
"article_id": 4341130
"size": 1
}
Hope someone can help me. Thanks