diff --git a/spec/Suite/Document.spec.php b/spec/Suite/Document.spec.php
index <HASH>..<HASH> 100644
--- a/spec/Suite/Document.spec.php
+++ b/spec/Suite/Document.spec.php
@@ -136,6 +136,26 @@ describe("Document", function() {
 
         });
 
+        it("returns `null` for undefined field", function() {
+
+            $document = new Document();
+            expect($document->get('value'))->toBe(null);
+            expect($document->get('nested.value'))->toBe(null);
+
+        });
+
+        it("throws an error when the path is invalid", function() {
+
+            $closure = function() {
+              $document = new Document();
+              $document->set('value', 'Hello World');
+              $document->get('value.invalid');
+            };
+
+            expect($closure)->toThrow(new ORMException("The field: `value` is not a valid document or entity."));
+
+        });
+
     });
 
     describe("->set()", function() {
diff --git a/src/Document.php b/src/Document.php
index <HASH>..<HASH> 100644
--- a/src/Document.php
+++ b/src/Document.php
@@ -386,6 +386,9 @@ class Document implements DataStoreInterface, HasParentsInterface, \ArrayAccess,
 
         if ($keys) {
             $value = $this->get($name);
+            if (!$value) {
+                return;
+            }
             if (!$value instanceof DataStoreInterface) {
                 throw new ORMException("The field: `" . $name . "` is not a valid document or entity.");
             }
Change `Document.get()` to return the default value when present or `null` when a field doesn't exists.