开发者社区> 问答> 正文

MongoDB如何随机获取若干条记录

在MySQL中,可以通过下面的语句简单的获取随机的5条记录:
screenshot
但是在MongoDB下,没有找到rand()方法,而且ObjectID也不是MySQL那样整数的,不好随机,不知道大家有什么好办法?

展开
收起
蛮大人123 2016-02-13 16:07:06 3673 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    实际上有在讨论是不是要增加这个特性:https://jira.mongodb.org/browse/SERVE...,目前看来没有实质进展。
    其实MySQL里也只是创建一个临时表,为所有的备选行生成一个随机数,然后针对这个随机数进行排序获得你需要的结果。
    在MongoDB里,你得自行为doc构建这样的排序属性,这个属性的值可以是一个随机数,从cookbook里摘过来的:
    screenshot
    查找的时候,也算个随机数出来,然后去排序属性里找最接近它的,不过记得给排序属性加索引:
    screenshot
    因为排序属性的值不像MySQL里是动态的,所以如果要真正随机地获取多个doc,还就得循环上面的操作。
    我想这个问题的根本还是,是否需要数学意义上的随机,如果只是要个大概,对于大数据量,不加索引的时候,可以用Map/Reduce提高收敛速度。
    所以呢,其实用时间戳也行,任何能找出来上下限值,同时别太多重复值的属性都可以用来做随机排序。

    2019-07-17 18:42:08
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《阿里云数据库 MongoDB 专属集群版》 立即下载
阿里云MongoDB备份恢复功能说明和原理介绍 立即下载
MongoDB处理大量级用户行为数据 立即下载

相关镜像