Saltar al contenido

¿Cómo usar $ hint en la consulta de agregación de MongoDB?

Solución:

Respuesta 2019

Desde MongoDB versión 3.6

Desde la documentación, puede agregar pistas con agregación de la siguiente manera:

db.collection.aggregate(pipeline, {hint: "index_name"})

Si desea ver explicar, simplemente agregue explicar como lo haría sin hint

La definición del índice puede ser muy subjetiva, y no algo que simplemente digas “indexa estas cosas” y luego esperas lo mejor. En realidad, requiere pensar un poco sobre el proceso de búsqueda al que se aplica.

Su consulta aquí parece estar formada por estos elementos principales, que son principalmente los valores “Cuenta” y “Duración”. Seguro que hay otras cosas allí como el “VisitTime” en particular, pero tomando la antigua analogía de la biblioteca y el índice de tarjetas, entonces piense en el proceso.

Entonces, cuando atraviesa la puerta de la biblioteca, se le presentan dos sistemas de índice de tarjetas:

  1. Contiene los libros de la biblioteca por la fecha de su autoría, lo que le permite obtener una selección de las tarjetas que apuntan a los libros según la fecha.

  2. Contiene los nombres de los autores de los libros y sus ubicaciones en la biblioteca.

Ahora, considerando que sabe que desea buscar libros de un autor escrito en los últimos 10 años, ¿qué sistema de índice elige? Entonces, ¿revisa las fechas de 10 años y busca el autor que contiene? ¿O prefiere buscar primero al autor y luego limitarse a qué libros se han escrito en los últimos 10 años?

Lo más probable es que los últimos 10 años tengan mucho más contenido que el de un solo autor. Por lo tanto, 2 es la mejor opción porque una vez que tenga todos los libros para ese autor, revisar las tarjetas para encontrarlos dentro de los 10 años debería ser una tarea mucho más pequeña.

Es por eso que el orden de las claves en un índice es importante para los patrones de consulta que está utilizando. Claramente, “Cuenta” debe ser lo que más acota la selección y luego otros detalles para ayudar a acotarla aún más.

Cualquier cosa que ponga algo como un “VisitTime” antes de eso, significa que debe examinar todas las cosas que probablemente no desee dentro de ese período antes de llegar a las cosas que necesita.

El orden es importante y siempre debe tenerlo en cuenta con el diseño de índices.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *