-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
Fully Compatible
If you think this change is important enough to include a snippet or link on the driver landing pages (e.g. somewhere after "Connect to MongoDB" and "Compatibility" on a page like https://docs.mongodb.com/drivers/swift ), please file a DOCSP ticket and link it to this ticket
- Document how to create a client that declares an API Version, include example.
- Document the strict option functionality, include example.
- Document the deprecation errors option, include example.
- Document generic command helper behavior, include example.
Here's pseudocode Andreas created that can be used for other drivers:
1. Declare an API version on a client:
// Declare API version "1" for the client serverApi = new ServerApi(v1); client = new MongoClient(uri, serverApi); cursor = client.database.collection.find(...);
2. Strict option:
Declaring a strict API version will cause the MongoDB server to reject all commands that are not part of the declared API version. This includes command options and aggregation pipeline stages. For example, the following find call would fail because the tailable option is not part of version 1:
// Declare API version "1" for the client serverApi = new ServerApi(v1, strict: true); client = new MongoClient(uri, serverApi); // Fails with an error cursor = client.database.collection.find(..., tailable: true);
3. The deprecationErrors option can be used to enable command failures when using functionality that is deprecated from version 1. Note that at the time of this writing, no deprecations in version 1 exist.
// Declare API version "1" for the client serverApi = new ServerApi(v1, deprecationErrors: true); client = new MongoClient(uri, serverApi);
4. The declared API version is applied to all commands run through the client, including those sent through the generic command helper. Specifying versioned API options in the command document AND declaring an API version on the client is not supported and will lead to undefined behaviour. To run any command with a different API version or without declaring one, create a separate client that declares the appropriate API version.