diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,10 @@
 
 ## [Unreleased]
 
+## [0.0.0.7] - 2018-04-23
+### Added
+- Added ability to delete nodes by their `BoltId`s.
+
 ## [0.0.0.6] - 2018-04-20
 ### Added
 - Added ability to update properties of the existing node; added ability to choose
diff --git a/hasbolt-extras.cabal b/hasbolt-extras.cabal
--- a/hasbolt-extras.cabal
+++ b/hasbolt-extras.cabal
@@ -1,5 +1,5 @@
 name:           hasbolt-extras
-version:        0.0.0.6
+version:        0.0.0.7
 synopsis:       Extras for hasbolt library
 description:    Extras for hasbolt library
 homepage:       https://github.com/biocad/hasbolt-extras#readme
@@ -33,6 +33,7 @@
   other-modules:       Database.Bolt.Extras.Query.Get
                      , Database.Bolt.Extras.Query.Put
                      , Database.Bolt.Extras.Query.Set
+                     , Database.Bolt.Extras.Query.Delete
                      , Database.Bolt.Extras.Query.Utils
                        Database.Bolt.Extras.Query.Cypher
                   
diff --git a/src/Database/Bolt/Extras/Query.hs b/src/Database/Bolt/Extras/Query.hs
--- a/src/Database/Bolt/Extras/Query.hs
+++ b/src/Database/Bolt/Extras/Query.hs
@@ -12,6 +12,7 @@
   , getGraph
   , putGraph
   , setNode
+  , deleteNodes
   ) where
 
 import           Database.Bolt.Extras.Query.Cypher (ToCypher (..))
@@ -25,4 +26,5 @@
                                                     PutRelationship (..),
                                                     putGraph)
 import           Database.Bolt.Extras.Query.Set    (setNode)
+import           Database.Bolt.Extras.Query.Delete (deleteNodes)
 import           Database.Bolt.Extras.Query.Utils  (NodeName)
diff --git a/src/Database/Bolt/Extras/Query/Delete.hs b/src/Database/Bolt/Extras/Query/Delete.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Bolt/Extras/Query/Delete.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE QuasiQuotes       #-}
+
+module Database.Bolt.Extras.Query.Delete
+  (
+    deleteNodes
+  ) where
+
+import           Control.Monad                  (forM)
+import           Control.Monad.IO.Class         (MonadIO)
+import           Data.Text                      (Text, intercalate, pack)
+import           Database.Bolt                  (BoltActionT, RecordValue (..),
+                                                 at, exact, query)
+import           Database.Bolt.Extras.Persisted (BoltId, fromInt)
+import           NeatInterpolation              (text)
+
+-- | 'deleteNodes' is used to delete all nodes with given 'BoltId's
+-- and all corresponding relatioships.
+--
+deleteNodes :: (MonadIO m) => [BoltId] -> BoltActionT m [BoltId]
+deleteNodes boltIds = do
+    records <- query formQuery
+    forM records $ \record -> do
+      nodeIdentity' <- record `at` varQ >>= exact
+      pure $ fromInt nodeIdentity'
+  where
+    varQ = "n"
+
+    formBoltIds :: Text
+    formBoltIds = intercalate ", " $ fmap (pack . show) boltIds
+
+    formQuery = [text|MATCH ($varQ)
+                      WHERE ID($varQ) IN [$formBoltIds]
+                      DETACH DELETE $varQ
+                      RETURN ID($varQ) as $varQ|]
diff --git a/src/Database/Bolt/Extras/Query/Set.hs b/src/Database/Bolt/Extras/Query/Set.hs
--- a/src/Database/Bolt/Extras/Query/Set.hs
+++ b/src/Database/Bolt/Extras/Query/Set.hs
@@ -10,7 +10,7 @@
 import           Data.Text                           (Text, append, intercalate)
 import           Database.Bolt                       (BoltActionT,
                                                       RecordValue (..), at,
-                                                      exact, query)
+                                                      exact, query, Value (..))
 import           Database.Bolt.Extras.Persisted      (BoltId, fromInt)
 import           Database.Bolt.Extras.Query.Cypher   (ToCypher (..))
 import           Database.Bolt.Extras.Query.Get      (NodeGetter, condIdAsText,
@@ -26,11 +26,11 @@
     let nodeGetterT = nodeAsText (varQ, nodeGetter)
     let condId      = condIdAsText (varQ, nodeGetter)
 
-    let newProperties = intercalate ", " $ fmap formPropertySet props
+    let newProperties = intercalate "," $ fmap formPropertySet $ filter ((/= N ()) . snd) props
 
     let getQuery = [text|MATCH $nodeGetterT
                          WHERE $condId
-    					           SET $newProperties
+                         SET $newProperties
                          RETURN ID($varQ) as $varQ|]
 
     record <- head <$> query getQuery
