TODO:从数据库中随机抽取一条记录

TODO:从数据库中随机抽取一条记录数据库

1.最直接,最粗暴的方法先计算记录的总数,而后选择一个从0到记录总数之间的随机数n,利用skip跳过n条记录,这是效率低下的的方法,首先的记录总数,在用skip会很耗时间;dom

2.那么有什么办法可以提供效率呢,方法就是给每条记录添加一个0-1的随机因子random。索引

“random” : 0.5127909016609585ip

想要在记录中查找一个随机记录,只要计算出一个随机数并做为查询条件就行了get

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

若是出现查询不到数据,那是由于随机数比记录中存的随机值都要大,就没有结果返回了,那就换个方向查询了,就能够查询到想要的数据了效率

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

3.更多复杂的查询,能够把随机因子包含在索引里面。方法

这样,随机获取一条记录,咱们也能够随机获取n条记录,作相应的业务环境使用im

wxgzh:ludong86

相关文章
相关标签/搜索