I use mongo\'s explain() to check the performance of some queries, sometimes a keep_mutation stage will show up like the following:
\"executionStats\" : {
Check this :
KEEP_MUTATIONS stage: When documents are deleted or updated some Query stages can receive invalidation notices. Some stages flag documents that are deleted. The set of flagged documents is then read by the KEEP_MUTATIONS stage, which re-checks these documents against the query and returns them if they still match. Note that this is not used for the WiredTiger engine, only for the MMAPv1.
KeepMutationsStage passes all of its child's data through until the child is EOF. It then returns all flagged elements in the WorkingSet that pass the stage's filter.
This stage is used to merge results that are invalidated mid-query back into the query results when possible. The query planner is responsible for determining when it's valid to merge these results.
Source