首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >$geoNear MongoDB的替代方案

$geoNear MongoDB的替代方案
EN

Stack Overflow用户
提问于 2021-01-12 07:44:35
回答 1查看 166关注 0票数 0

我正在开发一个API。我的端点之一返回,这个点是由LONGITUDE & LATITUDE按页面排列的同弦定义的。我还发送了一个PAGE_SIZE作为数字或Spot返回,以及一个MIN_DISTANCE从哪里开始页面,这是最后一页的最后一项。

我使用$geoNear键来实现这一点,这很方便,因为它还为我返回用于分页的中心的距离。

遗憾的是,我现在托管的数据库位于蔚蓝宇宙DB上,而且似乎不支持$geoNear

https://learn.microsoft.com/en-us/azure/cosmos-db/mongodb-feature-support-36#aggregation-stages

获得最相似结果的最佳选择是什么?有一堆或听起来不错,但无法找到最好的选择:($geoWithin,$geoIntersects,$near,$nearSphere,$geometry)

https://learn.microsoft.com/en-us/azure/cosmos-db/mongodb-feature-support-36#geospatial-operators

代码语言:javascript
运行
复制
Spots.aggregate
    ([
      {
        $geoNear: {
          near: {
            type: "Point",
            coordinates: [ LONGITUDE, LATITUDE ]
          },
          distanceField: "location.distance",
          spherical: true,
          minDistance: MIN_DISTANCE,
          maxDistance: DISTANCE * 1000,
          query: {
            $and: [
              ...
            ]
          }
        }
      },
      { $match: {} },
      { $limit : PAGE_SIZE},
      ...

谢谢:)

EN

Stack Overflow用户

发布于 2021-01-12 15:44:37

我最终使用了$nearSphere,得到了几乎相同的结果,除了手动计算的距离。

代码语言:javascript
运行
复制
Spots.aggregate(
    [
      {
        $match: {
          $and: [
            {
              location: {
                $nearSphere: {
                  $geometry: {
                      type : "Point",
                      coordinates : [ LONGITUDE, LATITUDE ]
                  },
                  $minDistance: MIN_DISTANCE,
                  $maxDistance: MIN_DISTANCE * 1000
                }
              }
            },
            ...
          ]
        }
      },
      { $limit : PAGE_SIZE},
      ...
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65679794

复制
相关文章

相似问题

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