sql >> Base de Datos >  >> NoSQL >> MongoDB

Tubería de agregación de MongoDB $ geoNear (usando la opción de consulta y usando la operación de tubería de coincidencia de $) dando un número diferente de resultados

Pocas suposiciones:-
1. Suponga que hay 300 registros que coinciden según la ubicación.
2. Suponga que el primer conjunto de 100 resultados no tiene la etiqueta pizza. Los 200 documentos restantes (101 a 300) tienen etiqueta pizza

Consulta 1:-

  • Hay 2 operaciones de tubería $geoNear y $match
  • La salida de la operación de canalización $geoNear es la entrada de la operación $matchpipeline
  • $geoNear encuentra un máximo de 100 resultados (límite que hemos especificado) según la ubicación ordenada por la distancia más cercana a la lejana. (Tenga en cuenta que los 100 resultados devueltos se basan únicamente en la ubicación. Por lo tanto, estos 100 resultados no contienen ningún documento con la etiqueta "pizza")
  • Estos 100 resultados se envían a la siguiente operación de tubería $match desde donde ocurre el filtrado. Pero como el primer conjunto de 100 resultados no tenía la etiqueta pizza, la salida está vacía

Consulta 2:-

  • Solo hay 1 operación de canalización $geoNear
  • Hay un campo de consulta incluido en la operación de tubería $geoNear $geoNear encuentra un máximo de 100 resultados (límite que hemos especificado) en función de la ubicación ordenada por la distancia más cercana a la lejana y la etiqueta de consulta =pizza
  • Ahora aquí, los resultados del 101 al 200 se devuelven como salida, ya que la consulta se incluye dentro de la operación de canalización $geoNear. Entonces, en una oración simple, decimos, encuentre todos los documentos con la ubicación [x,y] withtag=pizza.

PD:- La etapa de canalización de $group se agrega solo para obtener el conteo y, por lo tanto, no se ha escrito al respecto en la explicación