How to add / update a field collection without updating parent node/entity?
You can make use of the Entity API

example will be 

&lt;?php
// Implements hook_entity_update().
function qmlc_mod_entity_update($entity, $type) {
  if ($type == 'node' &amp;&amp; $entity-&gt;type == 'event') {
    $link_title = $entity-&gt;title;
    $link_url = entity_uri('node', $entity);
    $language = $entity-&gt;language;

    foreach ($entity-&gt;field_event_images[$language] as $event_images) {
      // Load field collection item.
      $field_collection = field_collection_field_get_entity($event_images);

      $num_of_images = count($field_collection-&gt;field_image[$language]);
      for ($i = 0; $i &lt; $num_of_images; $i++) {
        $field_collection-&gt;field_image_link[$language][$i]['title'] = $link_title;
        $field_collection-&gt;field_image_link[$language][$i]['url'] = $link_url['path'];
        $field_collection-&gt;field_image_link[$language][$i]['attributes']= array();
      }

      // Save field collection item. Use TRUE since you are updating a field collection item which is already linked with a node.
      $field_collection-&gt;save(TRUE);
    }
  }
}
?&gt;


References 


Programmatically create and update field collection with Entity API
Update field collection programmatically