Over a million developers have joined DZone.
Gold Partner

NoSQL Helper Libraries: FSharpCouch and MongoFS

· Database Zone

The Database Zone is brought to you in partnership with Clusterpoint.  Read about ACID-compliant Transactions Mechanism within NoSQL database from Clusterpoint.

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

FSharpCouch:

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:

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
}

createLocalMongoServer()
|> 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.
 

The Database Zone is brought to you in partnership with Clusterpoint.  Read about ACID-compliant Transactions Mechanism within NoSQL database from Clusterpoint.

Topics:

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 }}