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

发布于 2025-01-06 02:24:52 字数 62 浏览 1 评论 0原文

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

I need to pull multiple random documents from a collection in MongoDB. I don't want to ad a new key to my documents or use a map reduce. Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

dawn曙光 2025-01-13 02:24:52

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

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

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

You can generate random skip in range from 0 up to collection items count and then load documents:

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

But, such approach because less and less efficient for a big collections, because each time when you use skip mongodb iterate from first to skip item.

只为一人 2025-01-13 02:24:52

如果集合不是大得离谱的话......

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

If the collection isn't ridiculously large...

all_ids = MyModel.collection.distinct(:_id)
@my_models = MyModel.find(all_ids.sample(100)) # or .shuffle.take(100) in 1.8.7
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文