Over a million developers have joined DZone.

NoSQL Helper Libraries: FSharpCouch and MongoFS

· Database Zone

I've been working on a few new libraries lately that focus on providing functional wrappers around various NoSQL options.


FSharpCouch is something that I wrote about a little over two years ago. At the time, it was more of an educational exercise, but I have since revised it and found aspects of it to be useful. This is now available on NuGet as package ID FSharpCouch.

Here's an example:

type Person = {
    FirstName : string
    LastName : string

let couchUrl = "http://localhost:5984"
let databaseName = "people"

let result = { FirstName = "John"; LastName = "Doe" }
             |> createDocument couchUrl databaseName

let createdPerson = getDocument<Person> couchUrl databaseName result.id

You can find additional examples and the full source at https://github.com/dmohl/FSharpCouch.


MongoFs currently has a primary focus on function composition as it relates to setting up the MongoDB client aspects of server, database, and collection. It simply wraps functions around the necessary methods of the C# Mongo Driver and auto opens the encompassing module.

Here's an example:

let dbName = "SomeName"
let collectionName = "SomeName"

type Person = {
    mutable _id : ObjectId
    mutable FirstName : string
    mutable LastName : string

|> getMongoDatabase dbName
|> getMongoCollection<Person> collectionName

{ _id = ObjectId.GenerateNewId(); FirstName = "John"; LastName = "Doe" }
|> people.Insert |> ignore

let person = people.FindOne()

You can get it from NuGet as package ID MongoFs and find more examples and source at https://github.com/dmohl/MongoFs.


Published at DZone with permission of Daniel Mohl , DZone MVB .

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}