|
We use a TS_MODIFY plan for an empty filter, which means “delete all”, when a timeseries collection does not define a meta field.
> db.createCollection("ts", {timeseries: {timeField: "t"}});
|
{ "ok" : 1 }
|
> db.ts.insert({t: new ISODate(), f: 1});
|
WriteResult({ "nInserted" : 1 })
|
> db.runCommand({explain: {delete: "ts", deletes: [{q: {}, limit: 0}]}, verbosity: "queryPlanner"});
|
"winningPlan" : {
|
"stage" : "TS_MODIFY",
|
"opType" : "deleteMany",
|
"bucketFilter" : {
|
|
|
},
|
"residualFilter" : {
|
|
|
},
|
"inputStage" : {
|
"stage" : "COLLSCAN",
|
"direction" : "forward"
|
}
|
},
|
This would be better to not be a TS_MODIFY plan which will unpack every bucket. When there’s a meta field defined, we use BATCHED_DELETE.
|