mongoDB-0.10.0: MongoDB driver

Database.MongoDB

Description

Client interface to MongoDB database management system.

Simple example below. Use with language extension OvererloadedStrings.

 

 import Database.MongoDB
 import Data.CompactString ()  -- Show and IsString instances of UString
 import Control.Monad.Trans (liftIO)

 main = do
    pool <- newConnPool 1 (host "127.0.0.1")
    e <- access safe Master pool run
    print e

 run = use (Database "baseball") $ do
    clearTeams
    insertTeams
    printDocs "All Teams" =<< allTeams
    printDocs "National League Teams" =<< nationalLeagueTeams
    printDocs "New York Teams" =<< newYorkTeams

 clearTeams = delete (select [] "team")

 insertTeams = insertMany "team" [
    ["name" =: u"Yankees", "home" =: ["city" =: u"New York", "state" =: u"NY"], "league" =: u"American"],
    ["name" =: u"Mets", "home" =: ["city" =: u"New York", "state" =: u"NY"], "league" =: u"National"],
    ["name" =: u"Phillies", "home" =: ["city" =: u"Philadelphia", "state" =: u"PA"], "league" =: u"National"],
    ["name" =: u"Red Sox", "home" =: ["city" =: u"Boston", "state" =: u"MA"], "league" =: u"American"] ]

 allTeams = rest =<< find (select [] "team") {sort = ["home.city" =: (1 :: Int)]}

 nationalLeagueTeams = rest =<< find (select ["league" =: u"National"] "team")

 newYorkTeams = rest =<< find (select ["home.state" =: u"NY"] "team") {project = ["name" =: (1 :: Int), "league" =: (1 :: Int)]}

 printDocs title docs = liftIO $ putStrLn title >> mapM_ (print . exclude ["_id"]) docs

Documentation

module Data.Bson