Quiero hacer una búsqueda de texto en MongoDB. En desarrollo uso un mongodb local, y en producción uso MongoDB Atlas. Quiero hacer $search Atlas Search si la base de datos a la que estoy conectado es MongoDB Atlas. Si estoy conectado a una base de datos local, quiero usar $text .
Si termina con .mongodb.net , use Atlas Search. Si no, utilice la búsqueda de texto normal.
En producción no será lento porque primero intentará $search y funcionará en producción. En desarrollo, puede ser lento debido a que cada vez se realiza una consulta fallida adicional.
¿Hay alguna forma de imitar el comportamiento de búsqueda de Atlas para un MongoDB local? Está bien si se trata de una consulta realmente lenta, pero sería bueno probar con la misma calidad de coincidencia de texto que habrá en producción.
Diría que ambas sugerencias se consideran antipatrones y personalmente evitaría ambas.
Lo que personalmente haría es muy similar a su primera sugerencia, pero en lugar de verificar el valor de la cadena de conexión, simplemente usaría el valor process.env.NODE_ENV , esto se considera una práctica común para usar esto para separar su etapa de desarrollo y producción ambientes
¿Hay alguna forma de imitar el comportamiento de búsqueda de Atlas para un MongoDB local? Está bien si se trata de una consulta realmente lenta, pero sería bueno probar con la misma calidad de coincidencia de texto que habrá en producción.
Técnicamente no, como sabe, Atlas Search le brinda muchas capacidades de motor de búsqueda, como tokenizadores y analizadores listos para usar. Si tiene un caso de uso muy específico, tal vez podría diseñar una solución para que funcione, pero eso requerirá que básicamente haga ingeniería inversa de la funcionalidad que está usando a través de atlas, lo que significa que probablemente no valga la pena el esfuerzo.