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(lng, lat),
query: {
id: id,
},
//limit: 10 geoNear里面也有limit,我就是加了这个才没达到效果
}).skip(currentPage * 10).limit(10).end()
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/aggregate/Aggregate.skip.html#%E7%A4%BA%E4%BE%8B
db.collection('goods').aggregate().skip(currentPage * 10).limit(10)
我也拿不到100之后的数据, 你是怎么解决的?
.geoNear({ distanceField: 'distance', spherical: true, near: db.Geo.Point(longitude, latitude), }) .skip(skip) .limit(limit) .end()
用db.collection('goods').aggregate().skip(currentPage * 10).limit(10) 这样写也是个问题, 会把所有文档先查询一边, 然后再skip,limit 效率很低啊
你这是写在云函数里的吗
我也在纠结这个问题,我要用geoNear计算距离,也要用聚合查询,然后发现了只能输出100条,后面的页数输出的都是空数组啊,楼主的办法就是我的办法啊,怎么解决突破100条啊?
谢邀,不喜欢云开发
哈哈,官方响应得快。谢邀请。
.aggregate()
.skip(5)
.end()
按这个写理论上应该是OK的。