Как сделать запрос «LIKE» в MONGODB с помощью PHP?

У меня есть список имен улиц, и я хочу выбрать все, что начинается с «Аль». В моем mysql я бы сделал что-то вроде

SELECT * FROM streets WHERE "street_name" LIKE "Al%" 

Как насчет mongodb, используя php?

Используйте регулярное выражение:

 db.streets.find( { street_name : /^Al/i } ); 

или:

 db.streets.find( { street_name : { $regex : '^Al', $options: 'i' } } ); 

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

Включение этого в PHP:

 $regex = new MongoRegex("/^Al/i"); $collection->find(array('street_name' => $regex)); 

См .: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart

Кроме того, настоятельно рекомендуем использовать только собственный соединитель mongodb из PHP вместо оболочки. Это быстрее, чем любая обертка.

http://php.net/class.mongodb

MongoRegex устарел.
Использовать MongoDB \ BSON \ Regex

 $regex = new MongoDB\BSON\Regex ( '^A1'); $cursor = $collection->find(array('street_name' => $regex)); //iterate through the cursor 

вот мой рабочий пример:

 <?php use MongoDB\BSON\Regex; $collection = $yourMongoClient->yourDatabase->yourCollection; $regex = new Regex($text, 's'); $where = ['your_field_for_search' => $regex]; $cursor = $collection->find($where); //Lets iterate through collection 

$collection.find({"name": /.*Al.*/})

или похожие,

$collection.find({"name": /Al/})

Вы ищете что-то, что содержит «Al» где-то (оператор SQL «%» эквивалентен регулярному выражению «.»), А не то, что имеет «Al», привязанное к началу строки.

 <?php $mongoObj = new MongoClient(); $where = array("name" => new MongoRegex("^/AI/i")); $mongoObj->dbName->collectionName->find($where); ?> 

Просмотр для более подробной информации