mongodb/doc/Example.hs

34 lines
1.2 KiB
Haskell
Raw Permalink Normal View History

2011-07-30 16:49:37 +00:00
{-# LANGUAGE OverloadedStrings, ExtendedDefaultRules #-}
import Database.MongoDB
import Control.Monad.Trans (liftIO)
main = do
pipe <- runIOE $ connect (host "127.0.0.1")
e <- access pipe master "baseball" run
close pipe
print e
run = do
clearTeams
insertTeams
2011-07-21 20:39:19 +00:00
allTeams >>= printDocs "All Teams"
nationalLeagueTeams >>= printDocs "National League Teams"
newYorkTeams >>= printDocs "New York Teams"
clearTeams = delete (select [] "team")
insertTeams = insertMany "team" [
2011-07-30 16:49:37 +00:00
["name" =: "Yankees", "home" =: ["city" =: "New York", "state" =: "NY"], "league" =: "American"],
["name" =: "Mets", "home" =: ["city" =: "New York", "state" =: "NY"], "league" =: "National"],
["name" =: "Phillies", "home" =: ["city" =: "Philadelphia", "state" =: "PA"], "league" =: "National"],
["name" =: "Red Sox", "home" =: ["city" =: "Boston", "state" =: "MA"], "league" =: "American"] ]
2011-07-30 16:49:37 +00:00
allTeams = rest =<< find (select [] "team") {sort = ["home.city" =: 1]}
2011-07-30 16:49:37 +00:00
nationalLeagueTeams = rest =<< find (select ["league" =: "National"] "team")
2011-07-30 16:49:37 +00:00
newYorkTeams = rest =<< find (select ["home.state" =: "NY"] "team") {project = ["name" =: 1, "league" =: 1]}
printDocs title docs = liftIO $ putStrLn title >> mapM_ (print . exclude ["_id"]) docs