Skip to content
Greg Weber edited this page Sep 1, 2015 · 2 revisions

persistent-mongoDB has extended to support the most commonly used MongoDB operators in a type-safe way. However, you still may need to use the raw driver with Persistent at times. Note also that persistent-mongoDB exposes functions to help with converting between a document and an entity: toInsertFields, entityToFields, docToEntityEither, and docToEntityThrow.

Persistent's test case

runDB is still the MongoDB Action monad, so just run MongoDB queries as normal.

import Database.MongoDB((=:))
import Database.MongoDB (Document, Action, findOne)
import qualified Database.MongoDB as MongoDB

rawOne :: Trans.MonadIO m => MongoDB.Collection -> MongoDB.Selector -> Action m (Maybe Document)
rawOne collection q = findOne (MongoDB.select q collection)

theCollection :: Trans.MonadIO m
theCollection = rawOne $ "collection-name"

getTheR theId = do
  Just doc <- runDB $ theCollection ["_id" =: theId]
Clone this wiki locally