# File lib/mongo/collection/view/writable.rb, line 42
        def find_one_and_delete(opts = {})
          cmd = { :findAndModify => collection.name, :query => filter, :remove => true }
          cmd[:fields] = projection if projection
          cmd[:sort] = sort if sort
          cmd[:maxTimeMS] = max_time_ms if max_time_ms
          cmd[:writeConcern] = write_concern.options if write_concern

          with_session(opts) do |session|
            write_with_retry(session, write_concern) do |server, txn_num|
              apply_collation!(cmd, server, opts)
              Operation::Command.new(
                  :selector => cmd,
                  :db_name => database.name,
                  :session => session,
                  :txn_num => txn_num
              ).execute(server)
            end
          end.first['value']
        end