Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

224
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda