Excluding properties from returned ElementModel in plugin
Unfortunately this is one of Crafts disadvantages, you'll always fetch all fields in your craft_content table no matter if you need those or not, thus it's always a bit slow and query heavy.

Craft 3 introduces a way to solve that issue since it loops the field layout and only fetches the values you need and not all of them.

Anyway: you could do this:

// get an array of all fields in craft_content (note: that only works for fields
// with a record in `craft_content` so you won't fetch relations with that
$attributes = $journeys[0]-&gt;getContent()-&gt;getAttributes();
$this-&gt;returnJson([
    'title'                 =&gt; $journeys[0]-&gt;getTitle(),
    'myCustomField'         =&gt; $attributes['myCustomField'],
    'myAwesomeField'        =&gt; $attributes['myAwesomeField'],
    'anotherField'          =&gt; $attributes['anotherField'],
    'idsOfARelationField'   =&gt; $journeys[0]-&gt;relationFieldHandle-&gt;ids()
]);


That way you can define which values you need and return them in an array. If you don't need all the other values just leave them empty. If you only want to fetch all custom fields you can use

$this-&gt;returnJson($attributes);


Not sure if you'll receive the title that way, you need to try. Othewise - if you need the title and if it's not included

$attributes['title'] = $journes[0]-&gt;getTitle();
$this-&gt;returnJson($attributes);


solves that.

Edit: by the way if you only need the first element you can do $criteria-&gt;first() instead of $criteria-&gt;find();