How do I retrieve the field data  associated with an entity, using EntityFieldQuery? I'm still confused about the entity concept in Drupal 7.
I have a node type audio with an MP3 field. I'm able to use EntityFieldQuery to find all the  audio nodes, but I need the URL of the MP3, which is stored in the "file_managed" table, and I don't find a way to retrieve it.

This is what I have:

// Query audio nodes
$query = new EntityFieldQuery();
$query-&gt;entityCondition('entity_type', 'node')
  -&gt;entityCondition('bundle', 'audio')
  -&gt;propertyCondition('status', 1);
$result = $query-&gt;execute();


There is no URL in the $result array. At least I can't find it there; I only get the fid.
When EntityFieldQuery::count() is not invoked, what returned from EntityFieldQuery::execute() is an array having the following structure:

 

[entity type] =&gt; array([entities])


 

[entity] =&gt; array([relevant ID] =&gt; [entity object])


The relevant ID is normally the entity ID, as in the query you reported. See entity_create_stub_entity(), and entity_get_info() to understand what information the entity object contains.

To get all the fields associated with the entity you are querying, you just need to execute the following code.

$query = new EntityFieldQuery();
$query-&gt;entityCondition('entity_type', 'node')
  -&gt;entityCondition('bundle', 'audio')
  -&gt;propertyCondition('status', 1);
$result = $query-&gt;execute();

if (!empty($result['node'])) {
  $nodes = entity_load('node', array_keys($result['node']);
}