换个思路,我们可以在每个文档加一个随机键(random),用Math.random()方法生成随机数,存放进文档里。查询的时候,同样用Math.random()生成一个随机数,返回一条集合中随机数小于这个随机数的文档。当然,也有可能没有小于这个随机数的文档,但如果这样,就必定有一个大于等于这个随机数的文档,除非集合是空的。
查询一条随机数据
代码如下 | 复制代码 |
var random=Math.random(); 或 PRIMARY> db.phoneMessage.count() |
查询多条随机数据
1.参考单条查询,可用个循环,将查询的数据插入到集合t中。
代码如下 | 复制代码 |
for(var i=0;i<1000;i++) {var c=db.phoneMessage.find().limit(-1).skip(Math.floor(Math.random()*8704221)).next(); db.t.insert(c) } |
这种方法简单,但是数据量大的情况下,skip效率很低,耗时较长。
2.通过map/reduce来查询
mongodb 2.2以上可用如下方法,2.0格式有点问题
代码如下 | 复制代码 |
function mapf() { function reducef(key,values) { |
此方法也无法应对大数据量情况,会报错InternalError: too much recursion
3.添加一个随机数的字段,再查询就简单了
这种方法会比较好,但更改了集合结构。
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔