首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅使用mongodb geoNear或near获取最近的文档

仅使用mongodb geoNear或near获取最近的文档
EN

Stack Overflow用户
提问于 2016-03-18 10:55:59
回答 1查看 1.5K关注 0票数 0

我正疯狂地用MongoDB从一个特定的地点返回最近的场地。这是我第一次做这方面的工作,所以我对这种做法完全陌生。

一开始我所做的就是创建一个2DIndex的我的场地集合。

现在,我试图从一个特定的点得到500米范围内的场地,代码是:

代码语言:javascript
复制
    Venue.find({ location:
        {
            $near: [ 52.3835443 , 4.8353073 ],
            $maxDistance: 0.5 / 6371
        }
    }, function (err, venues) {
        return venues;
    });

不幸的是,它返回了所有文件。

场地模型有这样的场地:

代码语言:javascript
复制
"location": {
  "type": {
    "type": "string"
  },
  "coordinates": [{ "type": "Number" }]
}

我所有的场地都是这样的:

代码语言:javascript
复制
{
 "name": "name",
 "address": "address",
 "location": {
  "type": "Point",
  "coordinates": [50.1981668, 7.9943994999]
 }
}

我也尝试使用$geoNear,但我总是收到所有的文件,而不仅仅是那些在500米的距离。

编辑:

蒙古语版本为3.2;

索引:

代码语言:javascript
复制
{
    "v": 1,
    "key": {
        "location": "2dsphere"
    },
    "name": "location_2dsphere",
    "ns": "mydb.Venue",
    "2dsphereIndexVersion": 2
}

上述文件:

代码语言:javascript
复制
{
 "name": "A name",
 "address": "An address",
 "location": {
  "type": "Point",
  "coordinates": [50.1981668, 7.9943994999]
 }
}
EN

回答 1

Stack Overflow用户

发布于 2016-03-18 12:14:57

$maxDistance运算符将地理空间$near或$nearSphere查询的结果限制在指定的距离内。最大距离的测量单元由所使用的坐标系确定。对于GeoJSON点对象,请指定以米为单位的距离,而不是弧度。参考文献

当我执行这个查询时,我得到:

计划器返回错误:找不到$geoNear查询的索引

因此,将** $几何图形**添加到查询体中

代码语言:javascript
复制
Venue.find({ location:
      {
    $near: {
       $geometry : {
           type : "Point" ,
           coordinates : [ 52.3835443 , 4.8353073 ]},

       $maxDistance : 500}}}
    }, function (err, venues) {
        return venues;
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36082580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档