Как реализовать поиск с помощью $ nin

#php #arrays #json #mongodb #mongodb-query

#php #массивы #json #mongodb #mongodb-запрос

Вопрос:

Я использую этот $nin запрос для $regex поиска, но он не работает:

 first_name: { $nin: [ "/^rahul/i", "/^Bhosale/i" ] }
 

При выполнении этого запроса я не смог найти результат без «rahul» или «bhosale», но когда я нажал на этот запрос, как показано ниже

 first_name: { $nin: [ /^rahul/i, /^Bhosale/i ] }
 

это работает нормально.

когда я передаю массив find() , я думаю, что он берет обратную косую черту в двойные кавычки, поэтому он не смог найти результат.

Как я могу решить эту проблему?

Комментарии:

1. Не могли бы вы немного прояснить свой вопрос, вы имеете в виду, что у вас есть входной массив типа [ "/^rahul/i", "/^Bhosale/i" ] или [ "rahul", "Bhosale" ] который вам нужно передать find() функции с $nin помощью и вы хотите преобразовать этот массив в объект запроса типа { $nin: [ /^rahul/i, /^Bhosale/i ] } ?

2. Я предполагаю, что вы пытаетесь передать массив строки регулярных выражений в запрос, или вы имеете в виду, что когда вы передаете массив в запрос, он преобразуется в строку из выражения регулярных выражений? В основном ему нужен массив регулярных выражений, иначе, если есть строка, он попытается найти точные совпадения. Я не уверен насчет PHP, но должен быть способ создать массив регулярных выражений, а не строки регулярных выражений.

3. да, chridam, я хочу использовать функцию поиска в массиве, но внутренне ее массив будет кодировать массив, а закодированный массив будет принимать обратную косую черту [ «/ ^ rahul / i», «/ ^ Bhosale / i» ] этот запрос не вернет никакого результата

4. да, рахул Кумар … но как не может быть в состоянии в массиве регулярных выражений в запросе mongo db..