从 mongodb 获取 10 个独特的随机问题,用于问答游戏
Posted
技术标签:
【中文标题】从 mongodb 获取 10 个独特的随机问题,用于问答游戏【英文标题】:Get 10 unique random questions from mongodb for a quiz game 【发布时间】:2017-07-16 11:18:10 【问题描述】:我在 mongodb 中有一个包含 10000 个问题的测验数据库。我想为用户检索 10 个随机问题,这样它们就不会重复,直到所有选项都用尽,然后我才能重置或循环返回。我很清楚处理随机部分的 aggregate() 和 sample() 但它们不提供唯一的行。处理这个问题的正确方法是什么?是否可以使用 mongodb/mongoose 或者我应该切换到 mysql?
【问题讨论】:
【参考方案1】:一种解决方案是从您的集合中请求更多文档,$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
阶段的数据量
【讨论】:
以上是关于从 mongodb 获取 10 个独特的随机问题,用于问答游戏的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB:如何在 100 个集合中找到 10 个随机文档?