如何在MongoDB的地理空间查询中使用字段作为参数



这是我想执行的查询:

    db.cells.find(
       {
         loc: {
            $near: {
               $geometry: {
                  type : "Point",
                  coordinates : [ 31.0, 31.0 ]
               },
               $minDistance: 0,
               $maxDistance: this.range
            }
         }
       }
    )

问题出在this.range。我想使用cellsrange字段来设置最大距离。这个参数可以变化,或者maxDistance必须是我尝试匹配的每个文档的固定值?

解决问题的方法之一是在聚合管道中使用$geoNear计算距离字段。然后,使用计算距离字段与您想要的最大距离进行比较。这一点。

db.cells.aggregate([
  {
    "$geoNear": {
      "near": {
        "type": "Point",
        "coordinates": [
          31.0,
          31.0
        ]
      },
      "distanceField": "dist"
    }
  },
  {
    $match: {
      $expr: {
        lte: [
          "$dist",
          "$range"
        ]
      }
    }
  }
])

Mongo操场

相关内容

  • 没有找到相关文章

最新更新