For details, see <a href="http:&#x2F;&#x2F;pastebin.com&#x2F;raw&#x2F;1W88ywuu" rel="nofollow">http:&#x2F;&#x2F;pastebin.com&#x2F;raw&#x2F;1W88ywuu</a><p>The actual test:<p><pre><code>    (defparameter *model*
      (make-model (cl-json:decode-json-from-source #P&quot;&#x2F;tmp&#x2F;json.test&quot;)))

    (with-table (farmers :title &quot;farmers&quot;
                         :model *model*
                         :accessors ((farmer-name &quot;Full name&quot;)
                                     (farmer-fruits &quot;Fruits&quot;)))
      (dolist (farmer (table-entities farmers))
        (when (ppcre:scan &quot;Bob&quot; (farmer-name farmer))
          (with-table (fruits :title &quot;fruits&quot;
                              :model *model*
                              :accessors ((fruit-name &quot;Name&quot;))
                              :index t)
            (return
              (loop
                 for fid in (farmer-fruits farmer)
                 collect (fruit-name (iget fruits fid))))))))
</code></pre>
The :accessors arguments is used to resolve field access once for all when visiting a table. If :index is true, we build a temporary hash-table based on identifiers.