2012-07-06 15 views
5

Nel MongoDB l'equivalente di SQL "come" operatore èMongoDB dinamica come operatore

db.users.find({"shows": /m/}) 

Utilizzando nodejs/javascript voglio cambiare dinamicamente la lettera, sulla base di url paramater.

ho cercato

letter = req.params.letter; 

db.users.find({"shows": '/' + letter + '/'}) 

Questo non funziona, credo perché le barre sono ora stringhe vengono interpretati in modo diverso.

risposta

14

Un modo per farlo, secondo il documentation page:

db.users.find({ shows : { $regex : letter } }); 
+0

Perfetto. Grazie. Vi accetterà rispondere in 8 minuti. – jamjam

+0

https://docs.mongodb.com/manual/reference/operator/query/regex/#op._S_regex –

+0

Questo sta funzionando bene ma voglio cercare da più campi vedi sotto il mio codice –

2

+1 per mindandmedia sulla sintassi. Tuttavia, si ricorda, che, se si desidera che la query per utilizzare un indice efficiente, è necessario utilizzare le query di prefisso (chiamati anche espressioni regolari radicate) come/^ prefisso/

Vostri criteri è probabile che sia terribilmente lento altrimenti - vedere la nota nella documentazione qui:

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions