【问题标题】:Get 10 unique random questions from mongodb for a quiz game从 mongodb 获取 10 个独特的随机问题,用于问答游戏
【发布时间】:2017-07-16 11:18:10
【问题描述】:

我在 mongodb 中有一个包含 10000 个问题的测验数据库。我想为用户检索 10 个随机问题,这样它们就不会重复,直到所有选项都用尽,然后我才能重置或循环返回。我很清楚处理随机部分的 aggregate() 和 sample() 但它们不提供唯一的行。处理这个问题的正确方法是什么?是否可以使用 mongodb/mongoose 或者我应该切换到 mysql?

【问题讨论】:

    标签: mongodb mongoose aggregation-framework


    【解决方案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阶段的数据量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 2022-01-25
      • 1970-01-01
      • 2015-09-18
      相关资源
      最近更新 更多