Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

225
Vistas
PHP Mongo: busque un texto en particular en toda la colección

Quiero obtener todos los documentos que tienen una palabra específica en cualquier json anidado. Un documento en colección se ve así;

 Man:{ First name: 'F-Name' Last name: 'L-Name' hobbies:{ sports:'cricket' watching: 'films' } Likeness:{ name: 'F-name' fruit: 'chikoo' } }

y hay múltiples documentos de este tipo en la colección. Por ejemplo, quiero encontrar todos los documentos que tienen la palabra F-name . Ver en el json anterior. F-name está en 2 jsons anidados. Pero puede ser en uno solo o en múltiples. ¿Cuál es una forma rápida e inteligente de encontrar todos esos documentos en lugar de dar cualquier campo o nombre Json anidado (Nombre, Semejanza-> nombre en el caso anterior). ¿Hay alguna manera?

 $mng = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $filter = [ ?? ]; $query = new MongoDB\Driver\Query($filter); $res = $mng->executeQuery("Database.myName", $query);

Editar 1 Por sugerencia de @Shail Paras, ejecuto el siguiente código;

 <?php $mng = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $query = new \MongoDB\Driver\Query(['createIndex' => ['*' => 'text']]); $res = $mng->executeQuery("BBC_Database.BBC", $query); $filter = ['$text' => ['$search' => "\"F-name\""]]; $query1 = new MongoDB\Driver\Query($filter); $cursor = $mng->executeQuery("Database.Col", $query1); $filteredData = iterator_to_array($cursor); echo "<pre>"; print_r($filteredData); ?>

Pero da;

Error fatal: excepción no detectada 'MongoDB\Driver\Exception\RuntimeException' con el mensaje 'índice de texto requerido para la consulta de $texto' en C:\wamp64\www-------filename.php en la línea 7

¿Qué es el índice de texto según el error?

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Ok.. Ese es el error de la búsqueda de texto porque la búsqueda de texto solo funciona si se crea la indexación, y creo que su parte de indexación no funciona. es por eso que está lanzando esa excepción. y lo siento por tener prisa. pero Aquí está su solución:

Paso 1: crear índices en todos los documentos usando el comando

 $manager = new MongoDB\Driver\Manager("mongodb://127.0.0.1:27017"); $command = new MongoDB\Driver\Command([ "createIndexes" => "Col", "indexes" => [[ "name" => "indexName", "key" => ["$**" => "text"], "ns" => "Database.Col", ]], ]); $result = $manager->executeCommand("Database", $command); var_dump($result->toArray()); // this will show u indexing result

Paso 2: Ejecute su consulta

 $filter = ['$text' => ['$search' => "\"F-name\""]]; $query1 = new MongoDB\Driver\Query($filter); $cursor = $manager->executeQuery("Database.Col", $query1); $filteredData = iterator_to_array($cursor); echo "<pre>"; print_r($filteredData);

Espero que esto pueda ayudarte y, si fue así, no olvides leer estos artículos:

Búsqueda de texto e índices de texto

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda