MongoDB:从集合中提取多个随机文档

时间:2012-02-16 16:49:30

标签: javascript ruby-on-rails-3 mongodb mongomapper

我需要从MongoDB中的集合中提取多个随机文档。我不想在我的文档上添加新密钥或使用map reduce。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您可以在0到收集项目计数范围内生成随机跳过,然后加载文档:

db.items.find().skip(randonNumberHere).limit(1);

但是,这种方法因为大型集合的效率越来越低,因为每次使用skip mongodb从第一次迭代到跳过项目。

答案 1 :(得分:0)

如果收藏品不是很大......

all_ids = MyModel.collection.distinct(:_id)
@my_models = MyModel.find(all_ids.sample(100)) # or .shuffle.take(100) in 1.8.7