-
Type:
Task
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Fully Compatible
-
Execution Team 2023-04-17
-
None
-
None
-
None
-
None
-
None
-
None
-
None
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.