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

MongoDB: Pulling multiple random documents from a collection

本文关键字:提取 文档 随机 集合 MongoDB 一个      更新时间:2023-09-26

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

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

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

但是,这种方法对于大型集合来说效率越来越低,因为每次使用skip-mongodb时,都会从第一个迭代到跳过项。

如果集合不是大得离谱。。。

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