2012-07-06 3 views
5

В MongoDB эквивалент в SQL «как» операторMongoDB динамический как оператор

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

Использование nodejs/JavaScript Я хочу, чтобы динамически изменить букву, на основе URL-адреса В параметре.

Я попытался

letter = req.params.letter; 

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

Это не работает, я думаю, потому что косые теперь строки интерпретируются по-разному.

ответ

14

Один из способов сделать это, в соответствии с documentation page:

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

Perfect. Спасибо. Отвечаю вам ответ через 8 минут. – jamjam

+0

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

+0

Это работает нормально, но я хочу искать из нескольких полей, см. Ниже мой код –

2

+1 для mindandmedia по синтаксису. Тем не менее, пожалуйста, помните, что если вы хотите, чтобы запрос, чтобы использовать индекс эффективно, вы должны использовать префикс запросов (также называемые корневые Regexps) как/^ префиксом/

Ваш запрос, вероятно, будет ужасно медленно в противном случае - смотрите примечание в документации здесь:

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

Смежные вопросы