(二)小程序云开发之aggregate.geoNear()获取两地理点之间距离

前言

私活还是那个私活,功能还是那么嗯嗯啊啊,功能要求获取用户到站点的距离,本来想用腾讯地图的api,今天一看小程序云开发文档,云数据库聚合aggregate中有一个geoNear的方法,可以返回两点间距离。这不是就解决了嘛~事情当然不会那么简单......要是这么简单我还写什么(我还怎么水文章啊)

aggregate.geoNear()官方解释

 

主要看distanceField这个参数,这不就是咱们需要的距离吗,ok直接把官方代码搬过来改改就用吧,CV大法好!

具体实现

let {list} = await db.collection('your_collection_name').aggregate()
    .geoNear({
        distanceField: 'distance',// 距离的字段名,最后计算出的距离会放在这个字段中,单位米
        spherical: true,
        query: {    // 筛选,同where和aggregate.match写法
            status: 1,
            station_name: db.RegExp({    // 相当于like,模糊查询
                regexp: '.*' + event.data.search || '' + '.*',
                options: 'i',
            }),
        },
        near: db.Geo.Point(event.data.longitude, event.data.latitude) // 经纬度
    })
    .skip((now - 1) * size)    // 翻页
    .limit(size)
    .end()

 接下来保存,打开云函数本地调试看看效果....邦!

这就毫不犹豫的报了个错, 经过各种百度,看官方文档都没找到具体原因,我都开始跟小姐姐说自己跳坑里出不来了,最后的最后看到了一位大神说要创建索引,经过一通折腾竟然成功了...小姐姐夸我真棒!咳咳,具体方法如下:

  1. 打开云开发控制台,选择数据库
  2. 选中你的集合,点击索引管理
  3. 添加索引,填写索引名称和索引字段,选择为地理位置
  4. 保存,刷新,搞定

 

碎碎念

你他喵的腾讯怎么就不知道好好写文档呢!!官方文档上什么时候说要写索引了,无话可说,靠

搬砖去了

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值