2017-02-25 62 views
-3

我有一個有10000個問題的mongodb問答數據庫。我想爲用戶檢索10個隨機問題,這樣他們就不會重複,直到所有選項都耗盡,然後我才能重置或循環。我很清楚處理隨機部分的aggregate()和sample(),但它們不提供唯一的行。什麼是正確的方法來處理這個問題?是否有可能使用mongodb/mongoose或者我應該切換到mysql?從mongodb獲得10個獨特的隨機問題作爲問答遊戲

回答

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階段中的數據量