MongoDB $geoIntersects对于特定城市没有返回任何数据

3
我从谷歌地图手动获取了针对钦奈和班加罗尔城市的坐标,并将其插入到我的数据库中。对于班加罗尔城市,$geoIntersect可以完美地工作。但是,由于某些原因,对于钦奈城市,它并没有显示出来。我不确定我在哪里/错过了什么。以下是我的代码。
班加罗尔市详细信息
{
    "_id" : ObjectId("5b2d45ef4b511713052b49f9"),
    "cityId" : 10256,
    "countryEn" : "india",
    "countryAr" : "india ar",
    "provinceEn" : "Bangalore",
    "provinceAr" : "Bangalore ar",
    "cityEn" : "Bangalore",
    "cityAr" : "Bangalore ar",
    "lat" : 12.972442,
    "lon" : 77.580643,
    "countryCode" : "+91",
    "population" : 150257,
    "boundaries" : {
    "coordinates" : [
        [
            [
                77.747618,
                13.105034
            ],
            [
                77.758604,
                13.039487
            ],
            [
                77.816283,
                12.959201
            ],
            [
                77.825896,
                12.853452
            ],
            [
                77.742125,
                12.884244
            ],
            [
                77.700926,
                12.797213
            ],
            [
                77.461973,
                12.783821
            ],
            [
                77.412535,
                12.911017
            ],
            [
                77.390562,
                13.047514
            ],
            [
                77.525145,
                13.150506
            ],
            [
                77.636381,
                13.155855
            ],
            [
                77.747618,
                13.105034
            ]
        ]
    ],
    "type" : "Polygon"
    }
 }

我使用的查询

db.Cities_Master.find({
 boundaries: {
   $geoIntersects: {
     $geometry: { type: 'Point', coordinates: [77.5476, 13.105034] },
   },
 },
 })

钦奈市详细信息

{
    "_id" : ObjectId("5b2d4a734b511713052b4a01"),
    "cityId" : 10255,
    "countryEn" : "india",
    "countryAr" : "india ar",
    "provinceEn" : "chennai",
    "provinceAr" : "chennai ar",
    "cityEn" : "chennai",
    "cityAr" : "chennai ar",
    "lat" : 13.067439,
    "lon" : 80.237617,
    "countryCode" : "+91",
    "population" : 150257,
    "boundaries" : {
        "coordinates" : [
        [
            [
                80.309211,
                13.257326
            ],
            [
                80.332557,
                13.241285
            ],
            [
                80.332557,
                13.249305
            ],
            [
                80.295478,
                13.091519
            ],
            [
                80.248786,
                12.838584
            ],
            [
                80.149909,
                12.880089
            ],
            [
                80.097724,
                12.936309
            ],
            [
                80.123816,
                13.14368
            ],
            [
                80.320197,
                13.199841
            ],
            [
                80.178748,
                13.2092
            ],
            [
                80.239173,
                13.215885
            ],
            [
                80.309211,
                13.257326
            ]
        ]
    ],
    "type" : "Polygon"
    }
}

我用来查找钦奈的查询语句

db.Cities_Master.find({
 boundaries: {
   $geoIntersects: {
     $geometry: { type: 'Point', coordinates: [80.309211, 13.257326] },
   },
 },
})

我查询 Chennai 时,显示没有找到记录。 我是不是以错误的方式插入了坐标或存在其他问题? 希望能得到帮助。 谢谢。

1个回答

2
的坐标被表示为有效的闭合多边形,这就是为什么MongoDB查询能够工作。在的情况下,坐标的顺序是不正确的。您可以在此处轻松检查:

enter image description here

因此,为了解决这个问题,您可以重新排序数据库中不正确的。对于而言,有效的文档可能如下所示:

db.Cities_Master.save({
        "_id" : ObjectId("5b2d4a734b511713052b4a01"),
        "cityId" : 10255,
        "countryEn" : "india",
        "countryAr" : "india ar",
        "provinceEn" : "chennai",
        "provinceAr" : "chennai ar",
        "cityEn" : "chennai",
        "cityAr" : "chennai ar",
        "lat" : 13.067439,
        "lon" : 80.237617,
        "countryCode" : "+91",
        "population" : 150257,
        "boundaries" : {
            "coordinates" : [
            [
                [
                    80.309211,
                    13.257326
                ],
                [
                    80.332557,
                    13.249305
                ],
                [
                    80.332557,
                    13.241285
                ],
                [
                    80.320197,
                    13.199841
                ],
                [
                    80.295478,
                    13.091519
                ],
                [
                    80.248786,
                    12.838584
                ],
                [
                    80.149909,
                    12.880089
                ],
                [
                    80.097724,
                    12.936309
                ],
                [
                    80.123816,
                    13.14368
                ],
                [
                    80.178748,
                    13.2092
                ],
                [
                    80.239173,
                    13.215885
                ],
                [
                    80.309211,
                    13.257326
                ]
            ]
        ],
        "type" : "Polygon"
        }
    })

可以在此处预览。在这种情况下,您的查询正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接