Mongo: agregue $ geoNear y $ text sin resultados

Estoy intentando hacer una consulta de búsqueda de texto geoNear + en Mongoose:

landmarkSchema.aggregate( [ { "$geoNear": { "near": { "type": "Point", "coordinates": [parseFloat(userCoord1), parseFloat(userCoord0)] }, "distanceField": "distance", "minDistance": 1, "maxDistance": 5000, "spherical": true, "query": { "loc.type": "Point" } } }, { $match: { $text: { $search: sText } } }, { $sort: { score: { $meta: "textScore" } } } ], function(err,data) { if (data){ res.send(data); } else { console.log('no results'); res.send({err:'no results'}); } }); 

Pero Mongo no está devolviendo ningún resultado. Cuando realizo cada consulta por separado, $geoNear y $match : $text se devuelven los resultados correctos. ¿Estoy encadenando la consulta incorrectamente?

Solo una etapa inicial de $match puede usar un índice, por lo que no puede usar un índice de texto en la segunda $match . Tampoco puede combinar el uso de un índice de 2dsphere y el uso de un índice de texto en la misma $match . Una opción es cambiar el orden de la etapa de búsqueda de texto $match y la etapa $geoNear . Intercambiado, la búsqueda de texto utilizará un índice de texto y $geoNear seguirá funcionando si establece spherical : false . $geoNear calculará distancias planas, no esféricas, y no utilizará un índice.

Si eso no es posible, podríamos intentar pensar en otras opciones si describe el caso de uso.

Alternativamente a la respuesta de @ wdberkeley, puedes usar $geoWithin lugar de la etapa $geoNear .

 db.landmarkSchema.aggregate([ {$match: { $text: {$search: "great test text"} , loc: {$geoWithin: {$centerSphere: [[ 14.3, 48.3], 5/6731]}} }}]) 

Nota: el índice geo no será utilizado!

Más información: http://docs.mongodb.org/manual/reference/operator/query/geoWithin/