Couchbase поиск составных ключей

У меня есть следующий массив:

array(3) { [0]=> string(8) "xp is 20" [1]=> string(19) "level between 9, 50" [2]=> string(20) "cars between 100,200" } 

Сначала идет поле, затем оператор, а после искомое значение. Моя точка зрения такова:

function (doc) { emit([doc.data.xp, doc.data.level, doc.data.cars]) }

По сути, я хочу найти ключевой опыт, равный 20, И уровень между 9 и 50 И автомобили МЕЖДУ 100 И 200.

Могу ли я сделать это в Couchbase, и если да, то как?


person Gabriel    schedule 29.10.2013    source источник


Ответы (1)


Нет, так нельзя, по крайней мере сейчас. Представление Couchbase имеет только один индекс, поэтому у вас может быть только одно «между» для каждого представления.

Но вы можете создать 2 представления, которые будут emit «xp равны 20 И уровень между 9 и 50» и «xp равен 20 И автомобили МЕЖДУ 100 И 200», а затем пересекать массивы результатов на стороне приложения. Дополнительные сведения о составных ключах см. в этом вопросе.

person m03geek    schedule 29.10.2013
comment
Является ли единственным решением использовать elasticsearch, если вы хотите использовать веб-сайт Couchbase и резервное хранилище, но вам нужно получить документы на основе более чем одного индекса? - person Michael; 20.11.2013
comment
Да, elasticsearch был бы лучшим вариантом для этого. - person m03geek; 21.11.2013