# File lib/mongo/collection/view/writable.rb, line 208
        def replace_one(replacement, opts = {})
          update_doc = { Operation::Q => filter,
                         Operation::U => replacement,
                         Operation::MULTI => false,
                         Operation::UPSERT => !!opts[:upsert]
                        }
          write_concern = collection.write_concern
          with_session(opts) do |session|
            write_with_retry(session, write_concern) do |server, txn_num|
              apply_collation!(update_doc, server, opts)
              apply_array_filters!(update_doc, server, opts)

              Operation::Update.new(
                  :updates => [ update_doc ],
                  :db_name => collection.database.name,
                  :coll_name => collection.name,
                  :write_concern => write_concern,
                  :bypass_document_validation => !!opts[:bypass_document_validation],
                  :session => session,
                  :txn_num => txn_num
              ).execute(server)
            end
          end
        end