# File lib/mongo/collection/view/readable.rb, line 206
        def estimated_document_count(opts = {})
          cmd = { count: collection.name }
          cmd[:maxTimeMS] = opts[:max_time_ms] if opts[:max_time_ms]
          cmd[:readConcern] = collection.read_concern if collection.read_concern
          Mongo::Lint.validate_underscore_read_preference(opts[:read])
          read_pref = opts[:read] || read_preference
          selector = ServerSelector.get(read_pref || server_selector)
          with_session(opts) do |session|
            read_with_retry(session) do
              server = selector.select_server(cluster)
              Operation::Count.new(
                selector: cmd,
                db_name: database.name,
                read: read_pref,
                session: session
              ).execute(server)
            end.n.to_i
          end
        end