ruby-on-rails – Mongoid随机文件

让我说我有一个用户的集合.有没有办法使用mongoid在集合中找到n个不再返回相同用户的n个随机用户?现在让我们说用户集合如下所示:
class User
  include Mongoid::Document
  field :name
end

简单啊

谢谢

解决方法

最好的解决方案将取决于集合的预期大小.

对于小集合,只需要得到所有的和.shuffle.slice!

对于小尺寸的n,你可以得到这样的东西:

result = (0..User.count-1).sort_by{rand}.slice(0,n).collect! do |i| User.skip(i).first end

对于大尺寸的n,我建议创建一个随机”列进行排序.详情请见:http://cookbook.mongodb.org/patterns/random-attribute/ https://github.com/mongodb/cookbook/blob/master/content/patterns/random-attribute.txt

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...