2017-02-25 6 views
-3

ためにMongoDBから10個のユニークなランダムな質問を取得します。私はすべてのオプションが排出されるまで、彼らは繰り返し非され、その後、私は戻ってリセットまたはループする能力を持っているように、ユーザーのための10個のランダムな質問を取得したいと思います。私は、ランダムな部分を扱うaggregate()とsample()についてよく知っていますが、ユニークな行を提供していません。これを処理する正しい方法は何でしょうか? mongodb/mongooseを使用することは可能ですか?それともmysqlに切り替えるべきですか?は、私は10000の質問とMongoDBの中にクイズのデータ​​ベースを持っているクイズゲーム

答えて

1

一つの解決策は、与えられた結果は一意であり、その後、10に結果数を制限することを確認するために$group、あなたのコレクションから結果をより多くのドキュメントを要求するために、次のようになります。

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段階でデータの量を増やす必要があります

関連する問題