我有一个集合,该集合具有 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]
这将有助于绘制围绕查询点的项目。
希望有人可以提供帮助:)