2012-09-11 25 views
6

Domanda semplice, qualcuno sa come eseguire una query con caratteri jolly utilizzando la morfologia collegata a un database mongoDB?Morphia mongoDB query con caratteri jolly

Questo è ciò che la dichiarazione mongo sarà simile:

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

La mia dichiarazione morfina assomiglia:

Morphia: ds.find(File.class, "filename","/test/").order("filename").asList();

ho i nomi dei file nel mio database come test1, test etc

Se qualcuno potesse dirmi se è possibile anche con la morfina, sarebbe molto apprezzato.

Grazie

risposta

20

Cosa si fa riferimento a come un "jolly" è in realtà un "Regular Expression".

La classe Java che rappresenta le espressioni regolari è Pattern. È possibile passare questi al metodo di filtro dell'oggetto Query di 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"); 
+3

Grazie che era esattamente quello che mi serviva. – user1479897

2

Questo funziona anche

DS.find(Model.class).field("filename").startsWithIgnoreCase("name").asList(); 
0

può anche fare:

ds.createQuery(File.class) 
    .criteria("filename").contains("test") 
    .asList();