gpt4 book ai didi

ruby - 如何使用 MongoMapper 以随机顺序获取文档?

转载 作者:太空宇宙 更新时间:2023-11-03 18:27:16 24 4
gpt4 key购买 nike

我不能使用 Array#shuffle,因为我没有获取所有文档(我最多只获取 20 个文档)。我如何使用 MongoMapper(即在 MySQL 中使用 ORDER BY RAND())从 MongoDB 数据库中获取随机文档?

最佳答案

没有类似于ORDER BY RAND() 的技术。即使在 MySQL 中,也建议避免使用它(在大表上)。

不过,您可以应用一些常用技巧。

例如,如果您知道 id 的最小值和最大值,则在该范围内选择一个随机值并获取下一个对象。

db.collection.find({_id: {$gte: random_id}}).limit(1);

重复 20 次。

或者您可以自己向每个文档添加“随机”字段(并每隔一段时间重新计算一次)。这样您就不会在每个查询中获得真正随机的结果,但它会非常便宜。

db.collection.find().sort({pseudo_random_field: 1}).limit(20)

// you can also skip some records here, but don't skip a lot.

关于ruby - 如何使用 MongoMapper 以随机顺序获取文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9195972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com