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