2011-04-27 9 views

Respuesta

12

utilizar una expresión regular:

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

o:

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

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

convertir esto en PHP:

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

Sí, pero ¿qué hay en php? $ database-> streets-> find (array ("calle" => "/^Al/i")); –

+0

Como una pregunta complementaria, ¿cómo se compara esto en términos de velocidad bruta? La idea de usar expresiones regulares para filtrar un conjunto de datos me hace encogerme un poco ... Completa novato en mongodb sin embargo. –

+0

Siempre que la expresión regular comience con^(es decir, coincide con el comienzo de la cadena), se usarán los índices. – ceejayoz

0

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

o, de forma similar,

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

Usted está buscando algo que contiene "Al" en algún lugar (operador '%' de SQL es equivalente a las expresiones regulares '. *'), no algo que tiene "Al" anclado al comienzo de la cadena.

1

MongoRegex ha quedado obsoleto.
Uso MongoDB\BSON\Regex

$regex = new MongoDB\BSON\Regex ('^A1'); 
$cursor = $collection->find(array('street_name' => $regex)); 
//iterate through the cursor 
0
<?php 
$mongoObj = new MongoClient(); 
$where = array("name" => new MongoRegex("^/AI/i")); 
$mongoObj->dbName->collectionName->find($where); 
?> 

View for more details

1

aquí está mi ejemplo de trabajo:

<?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 
Cuestiones relacionadas