Edit in JSFiddle

Ext.define('CaseModel', {
	extend: 'Ext.data.Model',
	fields: [
		{ name: 'caseName', type: 'string' }
	],
    proxy: {
        type: 'memory',
        reader: {
            type: 'json'
        }
    }
});

	
Ext.define('OptionModel', {
	extend: 'Ext.data.Model',
	requires: ['CaseModel'],
	fields: [
		{ name: 'option', type: 'string' },
	],
	hasMany: {
		model: 'CaseModel',
		associationKey: 'caseNames',
		name: 'getCaseStore'
	},
    proxy: {
        type: 'memory',
        reader: {
            type: 'json'
        }
    }
});

Ext.define('OptionStore', {
	extend: 'Ext.data.Store',
	alias: 'store.option-store',
	requires: ['OptionModel'],
	model: 'OptionModel',
	data: [
		{ option: 'зонт', 		caseNames: [ { caseName: 'дождь' } ] },
		{ option: 'бейсболка', 	caseNames: [ { caseName: 'солнце' } ] },
		{ option: 'кроссовки', 	caseNames: [ { caseName: 'дождь' } ] }
	],
	filterForCase: function(caseName) {
		this.clearFilter();
		if (typeof caseName == 'undefined') {
			return;
		}
		this.filter([{
			filterFn: function(item) {
				return item.getCaseStore().find('caseName', caseName, 0, false, false, true) >= 0;
			}
		}]);
	}
});

var optionStore = Ext.create('OptionStore');
optionStore.filterForCase('солнце');
console.log(optionStore.getCount());

              

              

External resources loaded into this fiddle: