Bạn có thể sử dụng khung tổng hợp để đạt được điều này:
db.collection.aggregate(
[
{$match:
{action:'entry'}
},
{$group:
{_id:'$name',
first:
{$max:'$timestamp'}
}
}
])
Nếu bạn có khả năng bao gồm các trường khác trong kết quả, bạn có thể sử dụng $ first nhà điều hành
db.collection.aggregate(
[
{$match:
{action:'entry'}
},
{$sort:
{name:1, timestamp:-1}
},
{$group:
{_id:'$name',
timestamp: {$first:'$timestamp'},
otherField: {$first:'$otherField'},
}
}
])