Here is a views answer, but I'd still like to know if there is a better or preferred way of doing this.  I added a function in my_module:

    function my_module_views_pre_render(&$view) {
    
      if ($view->name=='staff_views') { // user redirect
        drupal_goto(drupal_get_path_alias('user/'.$view->result[0]->uid));
      }
      if ($view->name=='pub_by_docid') {
          if (count($view->result) == 1) {
              $node = node_load($view->result[0]->nid);
              $language = language_list()[$node->language];
              drupal_goto(drupal_get_path_alias('node/'.$view->result[0]->nid, $node->language), array('language' => $language), 301);
          }
    
      }
    }

Note that this function is actually redirecting for a view that matches users based on their legacy user id first, and then for a view that matches document id as mentioned originally in my question.

**Update:** I've updated the code here to reflect the [suggestion from J. Reynolds][1] that I include a http response code of 301 to avoid drupals default of 302.  

I also found that to get things to work for non-English publications, I needed to add a language option to `drupal_goto()`, which needs to be a language object.  That is the reason for the line creating the `$language` variable.


  [1]: http://drupal.stackexchange.com/questions/196264/how-to-redirect-based-on-matching-a-node-field#comment237077_196285