Database

[{_id:ObjectId("62be0271d373b2f2fc1826a3"),type:"foo",value:123,date:"2022-06-30",},{_id:ObjectId("62be0271d373b2f2fc1826a4"),type:"bar",value:321,date:"2022-06-29",},{_id:ObjectId("62be0271d373b2f2fc1826a5"),type:"foo",value:456,date:"2022-06-28",},{_id:ObjectId("62be0271d373b2f2fc1826a6"),type:"bar",value:789,date:"2022-06-27",},{_id:ObjectId("62be0271d373b2f2fc1826a7"),type:"baz",value:234,date:"2022-06-26",},]

Query

db.collection.aggregate([{$setWindowFields:{sortBy:{date:-1},output:{topTypes:{$addToSet:"$type",window:{documents:["unbounded","current"]}}}}},{$match:{$expr:{$lt:[{$size:"$topTypes"},3]}}},{$unset:"topTypes"}])

Result