收藏
回答

云开发Aggregate.geoNear聚合查询没有skip?

Aggregate.geoNear(options: Object): Aggregate

Aggregate聚合查询的参数没有skip,请问如何分页查询?

db.collection('users')
  .aggregate()
  .skip(5)
  .end()

是先查出多少条再剔除多少条,如果数据库记录数大于100我就无法拿到100之后的数据了(因为最大只能取100条记录);分页应该是先剔除前几条再查询后面的多少条(skip应该在limit前面)

已解决:

result = await db.collection('tableName').aggregate()

    .geoNear({

      distanceField: 'distance'// 输出的每个记录中 distance 即是与给定点的距离

      spherical: true,

      near: db.Geo.Point(lnglat),

      query: {

        id: id,

      },

    //limit: 10  geoNear里面也有limit,我就是加了这个才没达到效果

    }).skip(currentPage * 10).limit(10).end()



最后一次编辑于  2019-12-17
回答关注问题邀请回答
收藏

8 个回答

  • 邓坤力
    邓坤力
    2019-12-16

    https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/aggregate/Aggregate.skip.html#%E7%A4%BA%E4%BE%8B

    2019-12-16
    有用 1
    回复 2
    • 行舟
      行舟
      2019-12-16
      谢谢回复,但是这个方法是只能先找出记录再剔除前5个,还是无法实现分页。如普通查询可以用:db.collection('goods').skip(currentPage * 10).limit(10)来实现分页。
      2019-12-16
      回复
    • 行舟
      行舟
      2019-12-17
      谢谢,这个方法是正确的。geoNear里面的limit误导我了
      2019-12-17
      回复
  • 老张
    老张
    2019-12-17

    db.collection('goods').aggregate().skip(currentPage * 10).limit(10)

    2019-12-17
    有用 1
    回复 1
    • 行舟
      行舟
      2019-12-17
      谢谢,这个方法是正确的。geoNear里面的limit误导我了
      2019-12-17
      回复
  • 27
    27
    2022-04-16

    我也拿不到100之后的数据, 你是怎么解决的?

    .geoNear({
                distanceField: 'distance',
                spherical: true,
                near: db.Geo.Point(longitude, latitude),
            })
            .skip(skip)
            .limit(limit)
            .end()
    
    2022-04-16
    有用
    回复
  • 皓月。
    皓月。
    2020-11-27

    db.collection('goods').aggregate().skip(currentPage * 10).limit(10) 这样写也是个问题, 会把所有文档先查询一边, 然后再skip,limit 效率很低啊

    2020-11-27
    有用
    回复
  • BOYSO
    BOYSO
    2020-08-13

    你这是写在云函数里的吗

    2020-08-13
    有用
    回复
  • CallMeSoul
    CallMeSoul
    2019-12-19

    我也在纠结这个问题,我要用geoNear计算距离,也要用聚合查询,然后发现了只能输出100条,后面的页数输出的都是空数组啊,楼主的办法就是我的办法啊,怎么解决突破100条啊?

    2019-12-19
    有用
    回复 5
    • 行舟
      行舟
      2019-12-19
      db.collection('goods').aggregate().skip(currentPage * 10).limit(10)这样写没办法获取100条之后的数据吗?
      2019-12-19
      回复
    • CallMeSoul
      CallMeSoul
      2019-12-19回复行舟
      没geoNear就可以,有geoNear就不可以了
      2019-12-19
      回复
    • 行舟
      行舟
      2019-12-19回复CallMeSoul
      我没有这么多数据,如果存在这种问题的话,还真没想到有什么办法可以解决。感觉geoNear内部加个skip应该可以,但是现在的api里面没有这个参数。你后面找到办法了贴上来好么?
      2019-12-19
      回复
    • CallMeSoul
      CallMeSoul
      2019-12-19回复行舟
      ok,估计是官方geoNear里少个skip字段了
      2019-12-19
      回复
    • 行舟
      行舟
      2019-12-19
      赞同,另外期待你的解决方案0.0
      2019-12-19
      回复
  • 铭锋科技
    铭锋科技
    2019-12-17

    谢邀,不喜欢云开发

    2019-12-17
    有用
    回复
  • 我是小肥
    我是小肥
    2019-12-17

    哈哈,官方响应得快。谢邀请。

    2019-12-17
    有用
    回复 18
    • 行舟
      行舟
      2019-12-17
      官方的回复没有解决问题。。。
      2019-12-17
      回复
    • 我是小肥
      我是小肥
      2019-12-17回复行舟
      那是什么问题?不是方法都有了吗?
      2019-12-17
      回复
    • 我是小肥
      我是小肥
      2019-12-17回复行舟
      db.collection('users')
        .aggregate()
        .skip(5)
        .end()

      按这个写理论上应该是OK的。
      2019-12-17
      回复
    • 我是小肥
      我是小肥
      2019-12-17回复行舟
      咦?不对啊,你只是想要写分页功能吧?
      2019-12-17
      回复
    • 我是小肥
      我是小肥
      2019-12-17回复行舟
      云开发分页功能,不需要使用到aggregate呀,还是说你一定要用聚合?如果你不用聚合的话,普通云函数多次调用就可以了。
      2019-12-17
      回复
    查看更多(13)
登录 后发表内容
问题标签