当前位置: 首页 > 知识库问答 >
问题:

地理空间查询不起作用?

邹俊拔
2023-03-14

我有一个包含许多文档集合,其结构如下:

{
    "_id" : ObjectId("5a26b07414e7d436786cfe07"),
    "location" : {
        "coordinates" : [ 
            -30.0000019073486, 
            25.0000019073486
        ],
        "type" : "Point"
    },
    "refDate" : ISODate("2017-11-23T05:00:00.000Z"),
    "hourProg" : 0,
    "value1" : 1,
    "value2" : 4
}

纬度范围为[25;55]

该收藏包含大约60万条记录。

我设置了2D_Sphere索引:db.myCollection.createIndex({location:“2DSphere”})

db.myCollection.find( { 
    location : { 
        $near : {
            $geometry : {
                type : "Point" ,
                coordinates : [-25.27, 25.44] 
            }
        }
    }
}).count()

我获得了所有的记录,但我只期望有几个记录(靠近我的坐标!)

有什么建议吗?提前致谢

共有1个答案

乌和畅
2023-03-14

可能的问题是因为您没有设置最大距离。

find()函数中,应该有如下内容。

{
   <location field>: {
     $near: {
       $geometry: {
          type: "Point" ,
          coordinates: [ <longitude> , <latitude> ]
       },
       $maxDistance: <distance in meters>,
     }
   }
}
 类似资料:
  • 有没有想过为什么使用Dociety的ODM会在同一个查询上返回零结果? 更新#1看起来教义\MongoDB\Query\Builder::near()L363有问题。方法参数忽略第二个值($Y)。因此只传递要执行的第一个值。

  • 你能帮我解决这个问题吗?我想使用此方法在我的数据库中查找特定的缺口(它是由Apache Derby制作的)。我使用了EntityManager并从NetBeans中的数据库中映射持久性-实体类。 我得到这个错误: Java . lang . illegalargumentexception:在EntityManager中创建查询时出现异常:< br >异常描述:解析[SELECT * FROM U

  • 问题内容: 我有一个非常简单的查询,像这样: 我的默认设置是或某些用户ID,但是由于某种原因,该查询总是返回0行,我也尝试过,但还是没有运气,这可能是什么错误? EDTI 因此,在运行更多查询后,我发现我的问题是字段的默认值,因此我修改了查询,现在可以正常使用: 问题答案: NULL值需要特殊处理:http : //dev.mysql.com/doc/refman/5.1/en/working-w

  • 问题内容: 非常感谢你的帮助。我有一个和表。位置 我对位置模型执行以下查询。 然后,我要对其执行附加查询并根据以下内容对其进行过滤 该查询并 没有 工作。它返回一个空对象。 这是参数: location_params 1} permitted: true> ads_params 1} permitted: true> 不允许这样输入特定的列: 我有postgresql,我没有考虑过使用SQL,但是

  • 我想让ElasticSearch在我的盒子上工作。我有以下映射: 所以我有一个“运动鞋”索引,它有一个“运动鞋”类型,一个“品牌”属性,它有一个“ID”和一个“标题”。 检查运动鞋是否存在,运行curl-xget“http://localhost:9200/sneakers/sneaker/1?prettley”,我得到: 现在,runningcurl-xget'http://localhost:

  • 问题内容: 我正在使用嵌套集模型在iPhone上的本地SQLite数据库中存储较大的数据层次结构。我从他们的网站上阅读了MySQL技术文章,了解如何执行此操作,但是他们建议的查询(以及我需要的查询)之一似乎不适用于SQLite,并且我不确定如何解决它。 SQLite报告不是列,我认为这是因为其子查询实现不完整。有人对如何解决此限制有任何想法吗? 查询的目的是获取给定父节点的所有直接子代。 问题答案