Overview
En esta guía, puedes aprender cómo ejecutar una text query utilizando Laravel MongoDB.
Puedes utilizar una text query para recuperar documentos que contengan un término o una frase en un campo específico. Un término es una secuencia de caracteres que excluye los caracteres de espacio en blanco. Una frase es una secuencia de términos con cualquier número de caracteres de espacio en blanco.
Esta guía describe los métodos de modelo Eloquent que puedes utilizar para buscar texto y proporciona ejemplos. Para obtener más información sobre los modelos de Eloquent en la Integración de Laravel, consulta la sección Modelos Eloquent.
Antes de comenzar
Para ejecutar los ejemplos de código en esta guía, completa el tutorial de Inicio Rápido. Este tutorial proporciona instrucciones para configurar una instancia de MongoDB Atlas con datos de muestra y crear los siguientes archivos en su aplicación web Laravel:
Movie.phparchivo, que contiene un modeloMoviepara representar documentos en la colecciónmoviesMovieController.phparchivo, que contiene una funciónshow()para ejecutar operaciones de base de datosbrowse_movies.blade.phparchivo, que contiene código HTML para mostrar los resultados de las operaciones de la base de datos
Las siguientes secciones describen cómo editar los archivos de tu aplicación Laravel para ejecutar los ejemplos de código de operaciones de búsqueda y ver la salida esperada.
Búsqueda de campos de texto
Antes de poder realizar una consulta de texto, debe crear un índice de texto en el campo con valor de texto. Para obtener más información sobre cómo crear índices, consulte la sección Gestionar índices de la guía de creador/esquema.
You can perform a text query by using the $text operator followed by the $search field in your query filter that you pass to the where() method. The $text operator performs a text query on the text-indexed fields. The $search field specifies the text to search for.
Después de crear tu query utilizando el método where(), encadena el método get() para recuperar los resultados de la query.
Este ejemplo llama al método where() en el modelo de Eloquent Movie para recuperar documentos en los que el campo plot contiene la frase "love story". Para realizar esta text query, la colección debe tener un índice de texto en el campo plot.
Utilice la siguiente sintaxis para especificar la query:
$movies = Movie::where('$text', ['$search' => '"love story"']) ->get();
Para ver los resultados de la query en la vista browse_movies, edita la función show() en el archivo MovieController.php para que se asemeje al siguiente código:
class MovieController { public function show() { $movies = Movie::where('$text', ['$search' => '"love story"']) ->get(); return view('browse_movies', [ 'movies' => $movies ]); } }
Puntuación de búsqueda
A text query assigns a numerical text score to indicate how closely each result matches the string in your query filter. You can sort the results by relevance by using the orderBy() method to sort on the textScore metadata field. You can access this metadata by using the $meta operator:
$movies = Movie::where('$text', ['$search' => '"love story"']) ->orderBy('score', ['$meta' => 'textScore']) ->get();
Tip
Para obtener más información sobre el método orderBy(), consulta la sección Ordenar resultados de query de la guía Modificar salida de query.
Información Adicional
Para ver ejemplos de código ejecutables que demuestren cómo realizar operaciones de búsqueda utilizando la integración de Laravel, consulta los siguientes ejemplos de uso:
Para aprender cómo recuperar datos en función de criterios de filtro, consulta la guía Recuperar datos.