[CSHARP-2293] Implement new count API Created: 07/Jun/18  Updated: 28/Oct/23  Resolved: 22/Jun/18

Status: Closed
Project: C# Driver
Component/s: Command Operations
Affects Version/s: None
Fix Version/s: 2.7.0

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

Issue Links:
Depends
is depended on by DRIVERS-501 Implement new count API Closed
Epic Link: CSHARP MongoDB 4.0 Support

 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.



 Comments   
Comment by Githook User [ 22/Jun/18 ]

Author:

{'username': 'rstam', 'name': 'rstam', 'email': 'robert@robertstam.org'}

Message: CSHARP-2293: Replace Count with CountDocuments in reference documentation.
Branch: master
https://github.com/mongodb/mongo-csharp-driver/commit/ad03b1dd769eb853d1c8ffe4e5f54fdf3a5851fe

Comment by Githook User [ 22/Jun/18 ]

Author:

{'username': 'rstam', 'name': 'rstam', 'email': 'robert@robertstam.org'}

Message: CSHARP-2293: Skip some CountDocuments tests on older servers that don't support aggregate with hint.
Branch: master
https://github.com/mongodb/mongo-csharp-driver/commit/041ed93aff75a58c68d3ed83663dfdeb4a93ff8f

Comment by Githook User [ 22/Jun/18 ]

Author:

{'username': 'rstam', 'name': 'rstam', 'email': 'robert@robertstam.org'}

Message: CSHARP-2293: Implement new count API.
Branch: master
https://github.com/mongodb/mongo-csharp-driver/commit/3556fc9398f7fbdebfc7c266db469941f07b413d

Generated at Wed Feb 07 21:42:09 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.