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.
@effect-mongodb/services is the package that provides Effect services for effect-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.
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.