Skip to content

Commit

Permalink
DRIVERS-2658 Add hint support for distinct. (#1715)
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewdale authored Nov 4, 2024
1 parent c6f23a0 commit 77b1f78
Show file tree
Hide file tree
Showing 3 changed files with 224 additions and 0 deletions.
12 changes: 12 additions & 0 deletions source/crud/crud.md
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,16 @@ class DistinctOptions {
* and providing one will result in a server-side error.
*/
comment: Optional<any>;
/**
* The index to use. Specify either the index name as a string or the index key pattern.
* If specified, then the query system will only consider plans using the hinted index.
*
* This option is sent only if the caller explicitly provides a value. The default is to not send a value.
*
* @see https://www.mongodb.com/docs/manual/reference/command/find/
*/
hint: Optional<(String | Document)>;
}
enum CursorType {
Expand Down Expand Up @@ -2488,6 +2498,8 @@ aforementioned allowance in the SemVer spec.
- 2024-11-04: Always send a value for `bypassDocumentValidation` if it was specified.
- 2024-11-01: Add hint to DistinctOptions
- 2024-10-30: Document query limitations in `countDocuments`.
- 2024-10-28: Clarified that generated identifiers should be prepended to documents.
Expand Down
139 changes: 139 additions & 0 deletions source/crud/tests/unified/distinct-hint.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

73 changes: 73 additions & 0 deletions source/crud/tests/unified/distinct-hint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
description: "distinct-hint"

schemaVersion: "1.0"
runOnRequirements:
# https://jira.mongodb.org/browse/SERVER-14227
# Server supports distinct with hint starting from 7.1.0.
- minServerVersion: "7.1.0"

createEntities:
- client:
id: &client0 client0
observeEvents: [ commandStartedEvent ]
- database:
id: &database0 database0
client: *client0
databaseName: &database0Name distinct-hint-tests
- collection:
id: &collection0 collection0
database: *database0
collectionName: &collection0Name coll0

initialData:
- collectionName: *collection0Name
databaseName: *database0Name
documents:
- { _id: 1, x: 11 }
- { _id: 2, x: 22 }
- { _id: 3, x: 33 }

tests:
- description: "distinct with hint string"
operations:
- name: distinct
object: *collection0
arguments:
fieldName: &fieldName x
filter: &filter { _id: 1 }
hint: _id_
expectResult: [ 11 ]
expectEvents:
- client: *client0
events:
- commandStartedEvent:
command:
distinct: *collection0Name
key: *fieldName
query: *filter
hint: _id_
commandName: distinct
databaseName: *database0Name

- description: "distinct with hint document"
operations:
- name: distinct
object: *collection0
arguments:
fieldName: *fieldName
filter: *filter
hint:
_id: 1
expectResult: [ 11 ]
expectEvents:
- client: *client0
events:
- commandStartedEvent:
command:
distinct: *collection0Name
key: *fieldName
query: *filter
hint:
_id: 1
commandName: distinct
databaseName: *database0Name

0 comments on commit 77b1f78

Please sign in to comment.