Búsqueda en Atlas
Configura el operador de búsqueda de Atlas, compuesto/filtro, puntuación, resaltado, token de secuencia, paginación/cuenta y la ruta de extensión nativa del Driver según la versión 1.0.0.
Búsqueda básica de Atlas
$search y $searchMeta deben ser la primera etapa del pipeline de agregación, por lo que están separados del flujo general fields(...).end(). También se puede usar .search() omitiendo el índice.
Operador de búsqueda
• constructor raíz: text, phrase, autocomplete, equals, exists, in, range, compound
• cláusula reutilizable: SearchOperators.text/phrase/autocomplete/equals/in/exists/range
• operador raíz nativo del Driver: operator(SearchOperator)
• wrapper de Driver nombrado: SearchOperators.driver(name, operator)
compound admite must, mustNot, should, filter, minimumShouldMatch, score y también se puede pasar un AtlasSearchOperator general directamente.
Texto / Frase / Autocompletar
• text: ruta(s), consulta(s), difusa, criterios de coincidencia, sinónimos, puntuación
• phrase: ruta(s), consulta(s), slop, sinónimos, puntuación
• autocomplete: ruta única, consulta(s), orden de tokens, difusa, puntuación
• fuzzy(...) y synonyms(...) no se utilizan simultáneamente.
Diferencia entre cláusula de búsqueda y campos post-búsqueda
search().fields(...) no es un filtro interno de $search, sino un $match general después de $search. Para limitar candidatos en la etapa de índice de búsqueda, use compound.filter(...).
Puntuación y ordenación
scoreDesc()/scoreAsc() y la ordenación general se priorizan según el orden de llamada. Para una paginación estable, es recomendable tener una ordenación de campo único estable junto con la puntuación.
Detalles de Resaltado / puntuación / token de secuencia
El alias predeterminado es highlights, scoreDetails, searchSequenceToken. addFieldsScoreDetails() también activa los detalles de puntuación de la opción de búsqueda.
Paginación / token de secuencia / conteo
count().execute()
Conteo final del pipeline que refleja post-search fields(...) y el umbral de puntuación.
count().executeSearchMeta()
Conteo de metadatos de $searchMeta. Soporta SearchCountType.TOTAL/LOWER_BOUND y no ejecuta $match post-búsqueda.
existsQuery().execute()
Verifica si hay más de un resultado en el pipeline de búsqueda.
Extensión nativa del controlador
stage(Bson) se coloca justo después de $search y no se aplica al pipeline de conteo de metadatos de executeSearchMeta(). Si una nueva función del controlador se agrega antes que la API de conveniencia DSL, se priorizan operator, driverOptions, stage, SortSpec.driver, customizeAggregation.