Подстановочный запрос Morphia mongoDB

Прямой вопрос: кто-нибудь знает, как сделать запрос с подстановочными знаками, используя morphia, связанный с базой данных mongoDB?

Вот как будет выглядеть оператор mongo:

Монго: db.users.find({name:/Joe/})
SQL: SELECT * FROM users WHERE name LIKE "%Joe%"

Мое заявление о морфии выглядит так:

Морфия: ds.find(File.class, "filename","/test/").order("filename").asList();

У меня есть имена файлов в моей базе данных, такие как test1, test и т. д.

Если бы кто-нибудь мог сказать мне, возможно ли это вообще с морфием, я был бы очень признателен.

Спасибо


person user1479897    schedule 11.09.2012    source источник


Ответы (3)


То, что вы называете «подстановочным знаком», на самом деле является «Регулярным выражением».

Класс Java, представляющий регулярные выражения, представляет собой Pattern. Вы можете передать их методу filter объекта Query Morphia.

// create a regular expression which matches any string which includes "test"
Pattern regexp = Pattern.compile("test");
// use this regular expression to create a query
Query q = ds.createQuery(File.class).filter("filename", regexp).sort("filename");
person Philipp    schedule 11.09.2012
comment
Спасибо, это было именно то, что мне было нужно. - person user1479897; 12.09.2012

Это также будет работать

DS.find(Model.class).field("filename").startsWithIgnoreCase("name").asList();
person Indrajeet    schedule 21.09.2015

Также можно сделать:

ds.createQuery(File.class)
    .criteria("filename").contains("test")
    .asList();
person Ali Saeed    schedule 20.12.2016