diff --git a/lib/mongoid/relations/embedded/many.rb b/lib/mongoid/relations/embedded/many.rb
index <HASH>..<HASH> 100644
--- a/lib/mongoid/relations/embedded/many.rb
+++ b/lib/mongoid/relations/embedded/many.rb
@@ -170,7 +170,8 @@ module Mongoid
         # @since 3.1.0
         def delete_if
           if block_given?
-            target.each do |doc|
+            dup_target = target.dup
+            dup_target.each do |doc|
               delete(doc) if yield(doc)
             end
             self
FIX #<I> Embedded documents deleting