我需要从MongoDB中的集合中提取多个随机文档。我不想在我的文档上添加新密钥或使用map reduce。有什么建议吗?
答案 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