2012-02-22 3 views
0

Я использую morphia. Как вы знаете, для простого поиска я могу использовать это:поиск в поле карты

q.field("fieldname").containsIgnoreCase(texttosearch); 

Но мой тип поля - это карта. Поэтому я должен изменить его следующим образом (используйте точку):

q.field("mapname.fieldname").containsIgnoreCase(texttosearch); 

Но снова я хочу искать во всех полях. Я могу просто сделать это, повторяя для всех полей. Проблема в том, что мое поле не статично. Как я могу это решить?

ответ

3

Вы должны хранить его не как карту, а как массив/список пар ключ/значение. Затем вы можете искать ключевое поле и индексировать его. Это не то, что морфия делает для вас в данный момент, но что-то, что может быть альтернативным форматом хранения для Карты. Это был бы совсем другой формат.

Взгляните на эту дискуссию для более background

+0

ТНХ. изменил тип как String. – kubudi