使用Mongodb中的地理空间查询从点数组中返回最近的点

时间:2019-02-04 06:26:14

标签: mongodb

我有一个集合,该集合具有 geo_json对象数组,如下所示:

{
   id: 1,
   title: 'test',
   description: 'test',
   locations: [
      {
         geo_json: {
            type: 'Point',
            coordinates: [121.21, 14.58]
         }
      },
      {
         geo_json: {
            type: 'Point',
            coordinates: [111.11, 10.28]
         }
      }
   ]
}

我在该字段上有一个2DSphere索引,我的查询如下:

query = {
            'locations.geo_json': {
                '$near': {
                    '$geometry': {
                        'type': 'Point',
                        'coordinates': [lng, lat]
                    },
                    '$maxDistance': 5000
                }
            }
        }

它可以完成预期的工作,即退回指定半径(最大距离)内的收集项,我的问题是,我只想返回数组中“近”的实际点指定的坐标,而不是整个位置数组。

例如,像上面的例子一样,如果我用lat=14.58, lng=121.21查询,我将用id=1来获得项目,但是在位置字段中,我只需要那里的匹配位置,即{ {1}},但不包括[121.21, 14.58]

因此它将返回如下:

[111.11, 10.28]

这将有助于绘制围绕查询点的项目。

希望有人可以提供帮助:)

0 个答案:

没有答案