mongodb $text with $near

Ok, my goal is to perform a text search on my collection and then filter those results to ensure they fall within my "doughnut" geometry. Example from mongo site:

enter image description here

Here's the tough part. Mongo's documentation confirms that today you cannot combine the wonderfulness of $text and $near:

You cannot combine the $near operator, which requires a special geospatial index, with a query operator or command that uses a different type of special index. For example you cannot combine $near with the $text query.

Sooo.. Here is what I'm doing today. Notice my current method does not achieve a "doughnut" geometry (it's is just a circle growing in diameter which return duplicate results as the user "zooms" out on the map).

    var vendorResponse = JSON.parse(body);
    var vendorPosts = vendorResponse.postings;

    //Get the location of the user
    var userLat = req.query.lat;
    var userLong = req.query.long;

    //Get the item that furthest away from the user
    var furthestitem = sortedVendorPosts[sortedVendorPosts.length - 1];

    //Calculate the radius of the area
    var radius = Math.sqrt( Math.pow((userLat-furthestitem.location.lat), 2) + Math.pow((userLong-furthestitem.location.long), 2) )

    PostModel.find({
        $text: { $search: heading, $language: 'english' },
        $or: mongoCategories,
        coordinates :
             { $geoWithin :
                 {
                     $centerSphere : [ [ userLong, userLat ] , radius ]
                 }
             }
        } , { score: {
                $meta: "textScore"
            }
        }, function (err, results) {




        });

I've attempted to use mongos $geoIntersects methods but I'm banging my head against the wall to formulate this query. Detailed examples of how to workaround mongos current limitation would be a god-send! Thanks guys!

Seems there are a couple solutions in my case scenario:

  1. Use Mongo Connect and integrate something like solr or elasticsearch
  2. Use Mongo's $in method to perform 'nested queries'.. this requires two queries to db
  3. Use Mongo's $regex method (as others described and I've demonstrated below).

    PostModel.find({
        coordinates: { $near: {
            $geometry: { type: "Point", coordinates: [ userLong , userLat ] },
            $maxDistance: maxDistance,
            $minDistance: minDistance
            }
        },
        $or: mongoCategories,
        term: { "$regex": term, "$options": 'i' }
    }, function (err, results) {
        //systematic error. Redirect user so they can report error.
        if (err) {
            console.log(err);
            callback(body);
        // if no result found
        } else if (!results) {  
            callback(results);
        } else if (results) {
            callback(results);
        }
    });
    

I've reached out to the Mongodb team to see when we will be able to perform searches across multiple indexes. Hope this is helpful!