mongodb - $geoIntersects 按重叠百分比排序

Posted

技术标签:

【中文标题】mongodb - $geoIntersects 按重叠百分比排序【英文标题】:mongodb - $geoIntersects sorted by overlapping percentage 【发布时间】:2018-03-02 23:34:19 【问题描述】:

我收藏了这类文档:


  _id: ObjectId,
  type: "string", // COUNTRY, STATE, CITY
  geometry: 
    type: "MultiPolygon",
    coordinates: <coordinates>
  

我想计算例如COUNTRY 是每个STATE。我试过这样做:

var state = db.entity.findOne(_id:ObjectId("someStateID"));

db.entity.find(
  geometry: 
    $geoIntersects: 
      $geometry: state.geometry
    
  ,
  type:"COUNTRY"
);

这工作得很好,除了在某些情况下,一些STATE 的线接触到邻居COUNTRY 的边界,在那里我得到了两个或更多文档。

Here is an example image

有没有办法可以通过重叠百分比对结果进行排序?或者任何类型的过滤器来知道哪个是确切的父母?

【问题讨论】:

【参考方案1】:

我发现在 mongo 中没有办法做到这一点,我不得不用代码来做到这一点。 Here is an easy way to solve this problem

【讨论】:

以上是关于mongodb - $geoIntersects 按重叠百分比排序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MongoDB 中正确使用 $geoIntersects?

MongoDB $geoIntersects 不返回特定城市的任何数据

mongodb - $geoIntersects 按重叠百分比排序

地理空间查询是不是适用于数组? ($geoWithin, $geoIntersects)

$geoIntersects 不像预期的那样工作

如何在 $geoIntersects 查询中使用当前文档字段之一作为坐标