Q:

How can I check for models with the same relations? 

Given:
App. Chart = DS.Model.extend({
  tags: DS.hasMany('tag'),

  sameTag: function() {
    var id = this.get('id');
    var tags = this.get('tags');
    return this.store.filter('chart', function(q) {
      return Ember.isEqual(q.get('tags'), tags);
    });
  }.property('tags')
});

App. Tag = DS.Model.extend();

Fails because Ember.isEqual(q.get('tags'), tags) on the OrderedSets is false even when two models have the same tags and they both have their tags loaded.   Instead I've had to make a calculated property that gives me something that works with Ember.isEqual:
App. Chart = DS.Model.extend({
  tags: DS.hasMany('tag'),

  sameTag: function() {
    var id = this.get('id');
    var tags = this.get('_tagsKey');
    return this.store.filter('chart', function(q) {
      return Ember.isEqual(q.get('_tagsKey'), tags);
    });
  }.property(),

  _tagsKey: function(){
    var tags = [];
    this.get('tags').forEach(function(tag){
      tags.push(tag.id);
    });
    return tags.join(",");
  }.property('tags')
});

Which is a quite convoluted way of going about it. 

A:

If I got your idea right:
sameTag: function() {
  var tags = this.get('tags')
    , ids = tags.mapBy('id').join('');

  return this.store.filter('chart', function(q) {
    return q.get('tags').mapBy('id').join('') === ids;
  });
}.property('tags')

This is still a bit expensive, but should do the job.