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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TODO:从数据库中随机抽取一条记录相关的知识,希望对你有一定的参考价值。

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

技术分享

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

技术分享


本文出自 “计算机语言驱动数据” 博客,请务必保留此出处http://onetodo.blog.51cto.com/12321875/1876375

以上是关于TODO:从数据库中随机抽取一条记录的主要内容,如果未能解决你的问题,请参考以下文章

Oracle整合Mybatis实现list数据插入时,存在就更新,不存在就插入以及随机抽取一条记录

MySQL实现随机获取几条数据的方法

Oracle 中实现随机抽取数据

在c#中随机抽取数据库中数据且不重复怎么实现SQL语句

如何从数据库中随机抽取不重复数据

Sql Server随机抽取数据效率优化