Efficient Way would be
Filters down the documents by using $match to pass only matching documents to the next pipeline. By placing $match at the very beginning of a pipeline, the query can take advantage of indexes.
Use $project to pass along the documents with only the required fields to the next stage in the pipeline, this will further reduce data to the next pipeline.
db.getCollection('collection').aggregate([
{ $match: {"timestring":{$gte:"20230112000000"}} },
{ $project: {"timestring":1, "campaign_id":1}},
{ $group : { _id : "$campaign_id", count : { $sum : 1 } } },
{ $sort : { "count" : -1 } }
])