import { Effect, Schema } from "effect"
import { Collection, Db, FindCursor, MongoClient } from "effect-mongodb"
const Person = Schema.Struct({
name: Schema.String,
age: Schema.Number,
birthday: Schema.Date
})
const program = Effect.gen(function*() {
const client = yield* MongoClient.connectScoped("mongodb://localhost:27017")
const db = MongoClient.db(client, "source-db")
const sourceCollection = Db.collection(db, "source", Person)
const destinationCollection = Db.collection(db, "destination", Person)
const items = yield* Collection.find(sourceCollection).pipe(FindCursor.toArray)
yield* Collection.insertMany(destinationCollection, items)
})
await program.pipe(Effect.scoped, Effect.runPromise)
effect-mongodb is the core package that provides effectful APIs to work with MongoDB.
We adhere to the MongoDB driver compatibility guidelines, so minor releases might break compatibility with older MongoDB servers.
For example, upgrading the Node.js driver from 6.8 to 6.10 will make it incompatible with MongoDB server 3.6.
- @effect-mongodb/services package to provide Effect services/layers to use with
effect-mongodb
Take a look at the CONTRIBUTING.md guidelines.
If you find a bug in the source code, you can help us by submitting an issue to our GitHub Repository. Even better, you can submit a Pull Request with a fix.
You can request a new feature by submitting a discussion to our GitHub Repository. If you would like to implement a new feature, please consider the size of the change and reach out to better coordinate our efforts and prevent duplication of work.
effect-mongodb
is made available under the terms of the MIT License.
See the LICENSE file for license details.