我想在mongodb上使用聚合管道來檢索3個隨機文檔。
$sample
看起來是理想的,除了返回的文件不保證是唯一的。
關於如何生成3個獨特文檔作出迴應的任何想法?我猜這需要進一步使用聚合管道,我不確定的方式。
這當然假設集合中有3個或更多文檔。
謝謝。
我想在mongodb上使用聚合管道來檢索3個隨機文檔。
$sample
看起來是理想的,除了返回的文件不保證是唯一的。
關於如何生成3個獨特文檔作出迴應的任何想法?我猜這需要進一步使用聚合管道,我不確定的方式。
這當然假設集合中有3個或更多文檔。
謝謝。
你可以做的是要求更多的數據是什麼,比方說100 $sample
「d單據,_id
集團這些文件刪除重複項(唯一性),並限制輸出到所需的文件數:
db.test.aggregate([{
$sample: { size: 100 }
}, {
$group: {
_id: "$_id",
document: { $push: "$$ROOT" }
}
}, {
$limit: 3
}])
看起來這個問題實際上是建立在一個不正確的假設上的,這是基於我測試的方式。
$sample
確實返回了唯一的條目,根據定義,我只是發佈相同的請求,並沒有意識到數據庫已經被這個相同的請求過度填充。經過檢查,objectID實際上是獨一無二的,從而解決了這個問題(當然,這並不存在於第一位)。
感謝您的回覆。 這是假設我的集合的大小爲100或更大,實際上我實際上是從0增加我的集合,並希望檢索每個新條目的3個文檔。 我知道這意味着處理前3個條目作爲特例... 有沒有進一步的想法?謝謝 – Adam