2012-07-06 6 views
5

En mongodb l'équivalent à l'opérateur sql "comme" estdynamique MongoDB comme opérateur

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

En utilisant nodejs/javascript Je souhaite modifier dynamiquement la lettre, basée sur paramater url.

J'ai essayé

letter = req.params.letter; 

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

Cela ne fonctionne pas, je suppose que parce que les barres obliques sont maintenant les chaînes sont interprétées différemment.

Répondre

14

Une façon de le faire, selon le documentation page:

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

Parfait. Je vous remercie. Je vais vous accepter de répondre dans 8 minutes. – jamjam

+0

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

+0

Cela fonctionne très bien, mais je veux rechercher à partir de plusieurs champs voir ci-dessous mon code –

2

+1 pour mindandmedia sur la syntaxe. Cependant, s'il vous plaît rappelez-vous que si vous voulez que la requête d'utiliser un index efficacement, vous devez utiliser des requêtes de préfixe (aussi appelé ainsi des expressions régulières) comme/^ préfixe/

Votre requête est susceptible d'être horriblement lent autrement - voir la note dans les docs ici:

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