下面是保存在MongoDB中的文档示例,我将多边形数据保存为LNG & lat,如//www.example.com中所述https://www.mongodb.com/docs/manual/geospatial-queries/。我想找到给定点位于多边形内部的文档列表。例如:语言:-118.421871,最新版本:33.943645.
the index is created for zones.area.geo.
我尝试了Mongolink中提到的解决方案。但是数据没有来,我是mongo的新手,所以任何帮助都是感激的。
{
"zoneType": "GEO_FENCE",
"zones": [
{
"id": "5b9ddf55-d45e-4358-8f37-8fddb7d424e8",
"name": "Los Angeles, CA 90045, United States",
"area": {
"geo": {
"coordinates": [
[
[
-118.427456,
33.945997
],
[
-118.418435,
33.946995
],
[
-118.417232,
33.938442
],
[
-118.426425,
33.945997
],
[
-118.427456,
33.945997
]
]
],
"type": "Polygon"
}
}
}
]
}
下面是我用来检查点是否在多边形内部的聚合查询。
[
{
'$match': {
'$and': [
{
'companyId': {
'$in': [
new ObjectId('63368dbb50f6df4a67f08695'), '63368dbb50f6df4a67f08695'
]
}
}, {
'$or': [
{
'zones.area.geo': {
'$geoIntersects': {
'$geometry': {
'type': 'Point',
'coordinates': [
-118.426253, 33.945641
]
}
}
}
}
]
}
]
}
}
]
请指导我完成这件事。谢谢
1条答案
按热度按时间k10s72fa1#
返回结果的工作查询为:
具有索引:
zones.0.area.geo: 2dsphere
问题中的请求点如下所示: