# File lib/mongo/collection/view/readable.rb, line 242
        def distinct(field_name, opts = {})
          cmd = { :distinct => collection.name,
                  :key => field_name.to_s,
                  :query => filter }
          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)
              apply_collation!(cmd, server, opts)
              Operation::Distinct.new({
                                        :selector => cmd,
                                        :db_name => database.name,
                                        :options => {:limit => -1},
                                        :read => read_pref,
                                        :session => session
                                       }).execute(server)
            end.first['values']
          end
        end