diff --git a/Database/Persist/MongoDB.hs b/Database/Persist/MongoDB.hs
--- a/Database/Persist/MongoDB.hs
+++ b/Database/Persist/MongoDB.hs
@@ -622,7 +622,7 @@
 #ifdef DEBUG
   debug $
 #endif
-    if null filts then [] else concatMap filterToDocument filts
+    if null filts then [] else multiFilter andDollar filts
 
 filterToDocument :: (PersistEntity val, PersistEntityBackend val ~ MongoBackend) => Filter val -> DB.Document
 filterToDocument f =
@@ -635,15 +635,16 @@
       FilterOr fs  -> multiFilter orDollar fs
       -- usually $and is unecessary, but it makes query construction easier in special cases
       FilterAnd [] -> []
-      FilterAnd fs -> multiFilter "$and" fs
+      FilterAnd fs -> multiFilter andDollar fs
       BackendFilter mf -> mongoFilterToDoc mf
-  where
-    multiFilter :: forall record. (PersistEntity record, PersistEntityBackend record ~ MongoBackend) => Text -> [Filter record] -> [DB.Field]
-    multiFilter multi fs = [multi DB.:= DB.Array (map (DB.Doc . filterToDocument) fs)]
 
-existsDollar, orDollar :: Text
+multiFilter :: forall record. (PersistEntity record, PersistEntityBackend record ~ MongoBackend) => Text -> [Filter record] -> [DB.Field]
+multiFilter multi fs = [multi DB.:= DB.Array (map (DB.Doc . filterToDocument) fs)]
+
+existsDollar, orDollar, andDollar :: Text
 existsDollar = "$exists"
 orDollar = "$or"
+andDollar = "$and"
 
 filterToBSON :: forall a. ( PersistField a)
              => Text
diff --git a/persistent-mongoDB.cabal b/persistent-mongoDB.cabal
--- a/persistent-mongoDB.cabal
+++ b/persistent-mongoDB.cabal
@@ -1,5 +1,5 @@
 name:            persistent-mongoDB
-version:         1.4.2
+version:         1.4.2.1
 license:         MIT
 license-file:    LICENSE
 author:          Greg Weber <greg@gregweber.info>
