mongodb $geoWithin查询无法检索查询面中包含的点- v2

6ojccjat  于 2023-02-18  发布在  Go
关注(0)|答案(1)|浏览(124)

我已经问过同样的问题in this post了,我的例子是关于地球曲率的,所以让我们看看另一个例子。
这次我有两个嵌套的多边形。一个大的和一个小的。使用大的多边形执行$geoWithin查询不会返回任何文档,而使用小的多边形找到文档。有什么想法吗?
https://mongoplayground.net/p/V_3-s-itngA

我要查询的文件在法国西海岸的一个岛上。

{
    "_id": {
      "$oid": "625fec0f6476793a4581d172"
    },
    "featureOfInterest": {
      "samplingFeature": {
        "geometry": {
          "type": "Point",
          "coordinates": [
            -2.3433781679840138,
            46.713764788942484
          ]
        },
        "name": [
          {
            "lang": "en",
            "text": "France"
          }
        ],
        "type": "Feature"
      }
    }
  }

和查询

db.collection.aggregate([
  {
    $match: {
      "$or": [
        //Largest polygon - return no document
        {
          "samplingFeature.geometry": {
            "$geoWithin": {
              "$geometry": {
                "type": "Polygon",
                "coordinates": [
                  [[-55.722656,34.161818],[58.007813,34.161818],[ 58.007813,53.540307],[ -55.722656, 53.540307], [-55.722656,34.161818]]]
              }
            }
          }
        },
        //Smallest polygon - return the document
        //{
        //  "samplingFeature.geometry": {
        //    "$geoWithin": {
        //      "$geometry": {
        //        "type": "Polygon",
        //        "coordinates": [[[-5.800781, 42.682435], [9.316406, 42.682435], [9.316406, 50.625073], [-5.800781, 50.625073], [-5.800781, 42.682435]]]
        //      }
        //    }
        //}
        //}
        
      ]
    }
  }
])
nukf8bse

nukf8bse1#

你让行星向另一个方向弯曲了。你帖子里的坐标画出了这些方框:

标记明显在大盒子外面。
请使用jsfdle的链接来回答你之前的问题,而不是使用globe或者任何你获取图片的地方.两个遥远的点之间的最短路径不一定遵循经度和纬度.请阅读mongo地理空间查询中使用的Geodesic计算的数学.

相关问题