Canalización de agregación $ geoNear de MongoDB (usando la opción de consulta y la operación de canalización $ match) dando diferentes resultados
Estoy usando un $ geoNear como primer paso en el marco de agregación. Necesito filtrar los resultados en función del campo "etiqueta" y funciona bien, pero veo que hay 2 formas en que ambos dan resultados diferentes.
Ejemplo de documento MongoDB
{ "position": [ 40.80143, -73.96095 ], "tag": "pizza" }
He agregado el índice 2dsphere a la tecla "posición"
db.restaurants.createIndex( { 'position' : "2dsphere" } )
Consulta 1
db.restaurants.aggregate( [ { "$geoNear":{ "near": { type: "Point", coordinates: [ 55.8284,-4.207] }, "limit":100, "maxDistance":10*1000, "distanceField": "dist.calculated", "includeLocs": "dist.location", "distanceMultiplier":1/1000, "spherical": true } },{ "$match":{"tag":"pizza"} }, { "$group":{"_id":null,"totalDocs":{"$sum":1}} } ] );
Consulta 2
db.restaurants.aggregate( [ { "$geoNear":{ "query" : {"tag":"pizza"} "near": { type: "Point", coordinates: [ 55.8284,-4.207] }, "limit":100, "maxDistance":10*1000, "distanceField": "dist.calculated", "includeLocs": "dist.location", "distanceMultiplier":1/1000, "spherical": true } }, { "$group":{"_id":null,"totalDocs":{"$sum":1}} } ] );
La opción de agrupación es solo para obtener el recuento de documentos devueltos por ambas consultas.
Los totalDocs devueltos por ambas consultas parecen ser diferentes.
¿Alguien puede explicarme las diferencias entre ambas consultas?