TODO:從數據庫中隨機抽取一條記錄

TODO:從數據庫中隨機抽取一條記錄

11980001635c96b39cb9-1.jpg

1.最直接,最粗暴的方法先計算記錄的總數,然後選擇一個從0到記錄總數之間的隨機數n,利用skip跳過n條記錄,這是效率低下的的方法,首先的記錄總數,在用skip會很耗時間;

2.那麼有什麼辦法能夠提供效率呢,方法就是給每條記錄添加一個0-1的隨機因子random。

“random” : 0.5127909016609585

想要在記錄中查找一個隨機記錄,只要計算出一個隨機數並作爲查詢條件就好了

Result = db.getCollection(‘qq’).findOne({“random”:{“$gt”:random}})

如果出現查詢不到數據,那是因爲隨機數比記錄中存的隨機值都要大,就沒有結果返回了,那就換個方向查詢了,就可以查詢到想要的數據了

Result = db.getCollection(‘qq’).findOne({“random”:{“$lt”:random}});

3.更多複雜的查詢,可以把隨機因子包含在索引裏面。

這樣,隨機獲取一條記錄,我們也可以隨機獲取n條記錄,做相應的業務環境使用


wxgzh:ludong86

qrcode_for_gh_6bb1f39ae99c_258-1


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章