Skip to content

Commit 7985cd8

Browse files
committed
migration guide
1 parent ef3765b commit 7985cd8

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

CHANGELOG.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## 2.0.0
99

10-
* Change underlying driver from [`mongodb`](https://github.com/elixir-mongo/mongodb) to [`mongodb_driver`](https://github.com/zookzook/elixir-mongodb-driver)
11-
* Remove module config options `pool`, `pool_overflow`, and `pool_timeout`
10+
* Change underlying driver from [`mongodb`](https://github.com/elixir-mongo/mongodb) to [`mongodb_driver`](https://github.com/zookzook/elixir-mongodb-driver) 1.4.0
11+
* Remove config options `pool`, `pool_overflow`, and `pool_timeout`
1212
* Add support for MongoDB 6.0 and 7.0
1313
* Add support for loading & dumping nil binaries and dumping nil dates
1414

1515
### Possible breaking changes
1616

17-
Calls to `Mongo.Ecto` itself should not require any changes. However, if you make direct calls to the `Mongo` driver, you will need to update some of them to account for the `mongodb` -> `mongodb_driver` upgrade.
17+
Calls to the Ecto adapter itself should not require any changes. However, if you make direct calls to the `Mongo` driver, you will need to update some of them to account for the `mongodb` -> `mongodb_driver` upgrade. See [Migrating to 2.0.0](./README.md#migrating-to-200) in the Readme.
1818

1919
## 1.1.2
2020
* Add support for loading nil dates

README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,33 @@ Additionally special values are translated as follows:
122122

123123
The adapter and the driver are tested against most recent versions from 5.0, 6.0, and 7.0.
124124

125+
## Migrating to 2.0.0
126+
127+
Release 2.0.0 changes the underlying driver from [`mongodb`](https://github.com/elixir-mongo/mongodb) to [`mongodb_driver`](https://github.com/zookzook/elixir-mongodb-driver) 1.4.0. Calls to the Ecto adapter itself should not require any changes. Some config options are no longer used and can be simply deleted: `pool`, `pool_overflow`, `pool_timeout`.
128+
129+
If you make direct calls to the `Mongo` driver, you will need to update some of them to account for the `mongodb` -> `mongodb_driver` upgrade. These include:
130+
1. `Mongo` functions no longer accept a `pool` option or `MyApp.Repo.Pool` module argument. Instead, a pool PID is expected:
131+
```elixir
132+
# Old driver call
133+
Mongo.find(MyApp.Repo.Pool, "my_coll", %{"id": id}, projection: %{"field": 1}, pool: db_pool())
134+
135+
# New driver call
136+
Mongo.find(MyApp.Repo.pool(), "my_coll", %{"id": id}, projection: %{"field": 1})
137+
138+
# repo.ex
139+
# Provided the following function is defined in MyApp.Repo:
140+
defmodule MyApp.Repo do
141+
use Ecto.Repo, otp_app: :my_app, adapter: Mongo.Ecto
142+
143+
def pool() do
144+
Ecto.Adapter.lookup_meta(__MODULE__).pid
145+
end
146+
end
147+
```
148+
2. [`Mongo.command`](https://hexdocs.pm/mongodb_driver/1.4.1/Mongo.html#command/3) requires a keyword list instead of a document. E.g., instead of `Mongo.command(MyApp.Repo.pool(), %{listCollections: 1}, opts)`, do `Mongo.command(MyApp.Repo.pool(), [listCollections: 1], opts)`.
149+
3. `Mongo.ReadPreferences.defaults` -> `Mongo.ReadPreference.merge_defaults`
150+
4. When passing a `hint` to `Mongo.find_one` (etc.), if the index does not exist, an error is now returned.
151+
125152
## Contributing
126153

127154
To contribute you need to compile `Mongo.Ecto` from source and test it:

0 commit comments

Comments
 (0)