[DRIVERS-501] Implement new count API Created: 07/Jun/18  Updated: 28/Oct/23  Resolved: 27/Aug/18

Status: Closed
Project: Drivers
Component/s: None
Fix Version/s: None

Type: New Feature Priority: Major - P3
Reporter: Bernie Hackett Assignee: Rathi Gnanasekaran
Resolution: Fixed Votes: 1
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
depends on CDRIVER-2691 Implement new count API Closed
depends on CSHARP-2293 Implement new count API Closed
depends on CXX-1594 Implement new count API Closed
depends on GODRIVER-453 Implement new count API Closed
depends on JAVA-2885 Implement new count API Closed
depends on MOTOR-241 Implement new count API Closed
depends on NODE-1501 Implement new count API Closed
depends on PHPLIB-354 Implement new count API Closed
depends on PYTHON-1580 Implement new count API Closed
depends on RUBY-1354 Implement new count API Closed
depends on RUST-65 Implement new count API Closed
Problem/Incident
causes DRIVERS-2728 Document that countDocuments() uses $... Backlog
Related
related to DRIVERS-2518 Add rationale for why the filter para... Backlog
Driver Compliance:
Key Status/Resolution FixVersion
PYTHON-1580 Fixed 3.7
NODE-1501 Fixed 3.1.0
SCALA-422 Fixed 2.4.0
CSHARP-2293 Fixed 2.7.0
PERL-926 Fixed 2.0.0
RUBY-1354 Fixed 2.6.0
JAVA-2885 Fixed 3.8.0
CXX-1594 Fixed 3.4.0
PHPLIB-354 Fixed 1.4.0
MOTOR-241 Fixed 2.0
GODRIVER-453 Done 0.0.11
CDRIVER-2691 Fixed 1.11.0
RUST-65 Fixed 0.9.0-alpha
SWIFT-419 Duplicate

 Description   

Drivers supporting MongoDB 4.0 must deprecate the count() helper and add two new helpers - estimatedDocumentCount() and countDocuments(). Both helpers are supported with MongoDB 2.6+.

The names of the new helpers were chosen to make it clear how they behave and exactly what they do. The estimatedDocumentCount helper returns an estimate of the count of documents in the collection using collection metadata, rather than counting the documents or consulting an index. The countDocuments helper counts the documents that match the provided query filter using an aggregation pipeline.

The count() helper is deprecated. It has always been implemented using the count command. The behavior of the count command differs depending on the options passed to it and the topology in use and may or may not provide an accurate count. When no query filter is provided the count command provides an estimate using collection metadata. Even when provided with a query filter the count command can return inaccurate results with a sharded cluster if orphaned documents exist or if a chunk migration is in progress. The countDocuments helper avoids these sharded cluster problems entirely when used with MongoDB 3.6+, and when using `Primary` read preference with older sharded clusters.

The following spec change describes the necessary changes in detail, including implementation notes and yml / json spec tests:

https://github.com/mongodb/specifications/commit/99ef4e71c68811912da49b451408764eba73015c

The reference implementation for this change is provided by the Python driver and is in code review now.


Generated at Thu Feb 08 08:21:41 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.