Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion docs/migration-2.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,7 @@ mongo.WithSession(context.TODO(),sess,func(ctx context.Context) error {

## Options Package

`ClientOptions.AuthenticateToAnything` was marked for internal use in 1.x and does not have a replacement.
`ClientOptions.AuthenticateToAnything` was removed in 2.0 (it was marked for internal use in 1.x).

The following fields were removed because they are no longer supported by the server

Expand Down Expand Up @@ -633,10 +633,14 @@ The following types are not valid for a `findOne` operation and have been remove
- `MaxAwaitTime`
- `NoCursorTimeout`

The data type of `ArrayFilters` has been changed to `[]interface{}`, which can be used as the `Filters` field in the original `ArrayFilters` struct.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would "and" possibly make more sense that "which" here? will defer to @matthewdale

Copy link
Contributor

@jtazin jtazin Mar 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one should be similar to the one below right?

Suggested change
The data type of `ArrayFilters` has been changed to `[]interface{}`, which can be used as the `Filters` field in the original `ArrayFilters` struct.
The `ArrayFilters` struct type has been removed in v2. As a result, the `ArrayFilters` field in the `FindOneAndUpdateOptions` struct now uses the `[]interface{}` type. The `ArrayFilters` field (now of type `[]interface{}`) serves the same purpose as the `Filters` field in the original `ArrayFilters` struct.

Should we change this section to "### FindOneOptions / FindOneAndUpdateOptions"?


### UpdateManyOptions / UpdateOneOptions

The `UpdateOptions` has been separated into `UpdateManyOptions` and `UpdateOneOptions` to configure the corresponding `UpdateMany` and `UpdateOne` operations.

The data type of `ArrayFilters` in the `Update*Options` has been changed to `[]interface{}`, which can be used as the `Filters` field in the original `ArrayFilters` struct.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is the * in Update*Options? is this meant to be regex? i suggest we simply write out "UpdateManyOptions and UpdateOneOptions" to avoid extra confusion.

also is there a word missing after "the Update*Options"? should it be "the Update*Options types"

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The UpdateManyOptions and UpdateOneOptions in v2 are derived from the UpdateOptions in v1, so the ArrayFilters field in both types is also adopted from UpdateOptions. I'm not sure if using "UpdateManyOptions and UpdateOneOptions" is clear enough in this case.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure I understand. What does Update*Options refer to in your statement above?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you think the following is clearer?

Suggested change
The data type of `ArrayFilters` in the `Update*Options` has been changed to `[]interface{}`, which can be used as the `Filters` field in the original `ArrayFilters` struct.
The `ArrayFilters` struct type has been removed in v2. Correspondingly, the data type of `ArrayFilters` in the `UpdateOptions` struct has been changed to `[]interface{}` in the `UpdateManyOptions` and `UpdateOneOptions` structs. The new `ArrayFilters` field (with the `[]interface{}` type) can be used as the `Filters` field in the original `ArrayFilters` struct.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I looked up the code change and see what you mean now. What made this confusing is that both the field and the struct type had the same name.

How about this:

Suggested change
The data type of `ArrayFilters` in the `Update*Options` has been changed to `[]interface{}`, which can be used as the `Filters` field in the original `ArrayFilters` struct.
The `ArrayFilters` struct type has been removed in v2. As a result, the `ArrayFilters` fields in the new `UpdateManyOptions` and `UpdateOneOptions` structs (which replace the old `UpdateOptions` struct) now use the `[]interface{}` type. The `ArrayFilters` field (now of type `[]interface{}`) serves the same purpose as the `Filters` field in the original `ArrayFilters` struct.


### Merge\*Options

All functions that merge options have been removed in favor of a generic solution. See [GODRIVER-2696](https://jira.mongodb.org/browse/GODRIVER-2696) for more information.
Expand Down
Loading