Details
-
Task
-
Resolution: Fixed
-
Major - P3
-
None
-
None
-
None
-
Fully Compatible
-
Execution Team 2023-04-17
Description
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.