const type1Subs = await db.collection( 'subject' ).aggregate() .match({exam_id:exam_id,type: 1 }) .sample({ size: 40 }) }) console.log(type1Subs.list.length) //云函数后台打印日志这个只有 20 |
调用代码如上,随机取40条记录,但是返回的记录只有20条。本人确认符合条件的数据超过40条。请问小程序云开发数据库函数Sample是否有20条记录数量限制?如有,请问如何解决?
已通过添加limit参数解决该问题。但是个人仍觉得这个设计逻辑有点诡异。
const type1Subs = await db.collection(
'subject'
).aggregate()
.match({exam_id:exam_id,type:1})
.sample({
size: 40
})
.limit(40)
})
console.log(type1Subs.list.length)
//云函数后台打印日志值为 40,符合预期。
你想要的结果,暂时还想不出解决办法。
1、将就一下,就20条呗。
2、如果非要凑齐40条的话,换我的话,只能多随机几次,把几次结果合在一起,通过js去重,再随机40条。