Mongo: aggregate $geoNear and $text no results

前端 未结 2 925
北恋
北恋 2021-01-16 02:39

I\'m trying to do a geoNear + text search aggregate query in Mongoose:

landmarkSchema.aggregate(
   [
      { \"$geoNear\": {
        \"near\": {
          \         


        
相关标签:
2条回答
  • 2021-01-16 02:55

    Alternatively to @wdberkeley's answer, you can use $geoWithin instead of the $geoNear stage.

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

    Note: The geo index won't be used!

    More information: http://docs.mongodb.org/manual/reference/operator/query/geoWithin/

    0 讨论(0)
  • 2021-01-16 03:09

    Only an initial $match stage can use an index, so you cannot use a text index in the second $match. You also can't combine using a 2dsphere index and using a text index in the same $match. One option is switching the order of the text search $match stage and the $geoNear stage. Swapped, the text search will use a text index and $geoNear will still work if you set spherical : false. $geoNear will calculate planar, not spherical, distances, and will not use an index.

    If that's not feasible, we could try to think of other options if you describe the use case.

    0 讨论(0)
提交回复
热议问题