-3
我有一个有10000个问题的mongodb问答数据库。我想为用户检索10个随机问题,这样他们就不会重复,直到所有选项都耗尽,然后我才能重置或循环。我很清楚处理随机部分的aggregate()和sample(),但它们不提供唯一的行。什么是正确的方法来处理这个问题?是否有可能使用mongodb/mongoose或者我应该切换到mysql?从mongodb获得10个独特的随机问题作为问答游戏
我有一个有10000个问题的mongodb问答数据库。我想为用户检索10个随机问题,这样他们就不会重复,直到所有选项都耗尽,然后我才能重置或循环。我很清楚处理随机部分的aggregate()和sample(),但它们不提供唯一的行。什么是正确的方法来处理这个问题?是否有可能使用mongodb/mongoose或者我应该切换到mysql?从mongodb获得10个独特的随机问题作为问答游戏
一个解决办法是从您的收藏要求更多的文件,$group
结果,以确保给出的结果是唯一的,然后限制结果数到10:
Model.aggregate([{
$sample: { size: 100 }
}, {
$group: {
_id: "$_id",
document: { $push: "$$ROOT" }
}
}, {
$limit: 10
}], function(err, res) {
if (err) {
console.log(err);
return;
}
console.log(res);
})
如果你没有10个文件最后,您将不得不再次查询或增加$sample
阶段中的数据量