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