node.js - Mongoose 地理空间与多边形相交

标签 node.js mongodb mongoose

我已经搜索了一个小时左右,但似乎找不到解决方案。

我的 Node.js 应用程序中有一个定义的多边形,存储为:

[[-0.4449,51.4532],[-0.4586,51.4562],[-0.4591,51.4572],...

其中每个点都以 [lng,lat] 形式给出。

在我的 MongoDB 集合中,我有具有以下结构的对象:

_id: ...
givenID: ...
location: [lng, lat]
...

我将 location 属性表示为:

  location: {
    type: [Number]
  },

在我的 Mongoose 架构中。

我可以查询所有记录,架构正确映射位置,并且按预期返回[lng, lat],但我似乎无法对集合中的任何文档执行相交

我的查询如下:

  let geoJson ={
    "type": "Polygon",
    "coordinates": geozone
  };

  try {
    const test = await GpsLog.where('location').intersects().geometry({
      type: "Polygon",
      coordinates: geozone
    });

其中geozone是上面列出的多边形。

我在每个文档中的位置上也有一个2dsphere索引以供引用。

如果我将geospatial type作为LineString传入,我会返回0条记录,但是将其作为Polygon传入会给出geojson坐标必须是一个数组,但据我所知它们是一个数组(显然)。

我是不是漏掉了什么?我确信这个错误是一些我没有发现的小错误。

最佳答案

愚蠢的错误,坐标属性需要包装在另一[]中才能成为有效的多边形。现在工作正常。

关于node.js - Mongoose 地理空间与多边形相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52858470/

相关文章:

javascript - 如何创建引用其他 grunt 任务的 grunt 任务

php - 我需要在 mongo php 中使用类似查询

node.js - Nodejs、Mongoose、Jquery 小部件

javascript - 如何在 Mongoose/MongoDB 中正确构建数据库?

node.js - 我可以在创建模型后将 mongoose 插件添加到模型吗?

node.js - Nodejs - 如何找到哪个路由器用于请求?

node.js - RabbitMQ 和 Node.js 如何处理故障转移场景?

java - 使用 Java 驱动程序处理 MongoDB 模式更改的正确方法

json - 计算数组中多个项目的出现次数

mongodb - 如何保存填充的文档?