Q:

Utilizando ng-Options como faço filter que interprete exatamente o valor informado

Irei por um exemplo apenas para teste:
Nesse exemplo quando coloco filter:chart.id='1', além de ele me retornar o id 1 ele me retorna o id 10, como eu faria para que retornasse apenas o id=1? 

function TodoCtrl($scope) {
    
  $scope.chartList = [ 
    { "id" : 1, "name" : "chart 1", "order" : 1, "active" : false },
    { "id" : 2, "name" : "chart 2", "order" : 2, "active" : false },
    { "id" : 3, "name" : "chart 3", "order" : 3, "active" : true },
    { "id" : 4, "name" : "chart 4", "order" : 4, "active" : true }, 
    { "id" : 10, "name" : "chart 10", "order" : 5, "active" : true }
  ];
}
.done-true {
  text-decoration: line-through;
  color: grey;
}
<div ng-app>
  <div ng-controller="TodoCtrl">
    <select ng-model="toAddChart" ng-options="chart.id as chart.name for chart in chartList | filter:chart.id='1'">
      <option value=""></option>
    </select>
  </div>
</div>

A:

Dependendo da versão do AngularJS que estiver usando você pode forçar ele a fazer uma comparação exata passando true como parâmetro para o filter
ng-options="chart.id as chart.name for chart in chartList | filter:chart.id=1:true"

Mas deve levar em consideração que a comparação desta forma é exata, então no seu exemplo existiam aspas simples no filter:chart.id='1', repare que eu removi elas no meu exemplo, com elas ele não funcionaria pois ele compararia um texto com um número e o resultado seria falso.
Em versões antigas do AngularJS você pode criar uma função para fazer este filtro
$scope.meuFiltro = function(valor){
    return function(obj){
        return obj.id == valor;
    }
};

Então usaria ela passando o valor que quer filtrar
ng-options="chart.id as chart.name for chart in chartList | filter:meuFiltro(1)"

