【发布时间】:2015-02-05 13:35:44
【问题描述】:
我想从 MongoDB 数据库中检索一组随机文档。到目前为止,经过大量谷歌搜索,我只看到了检索一个随机文档或一组文档的方法,这些文档从随机跳过位置开始,但文档仍然是连续的。
我尝试过 mongoose-simple-random,但不幸的是它没有检索到“真正的”随机集。它的作用是跳到一个随机位置,然后从该位置检索 n 个文档。
相反,我想像 MySQL 一样使用 一个查询(或最少数量的查询)检索一个随机集,并且我需要这个列表每次都是随机的。我需要它是高效的——相对于 MySQL 的这种查询。我想在 MongoDB 中重现以下内容:
SELECT * FROM products ORDER BY rand() LIMIT 50;
这可能吗?我正在使用 Mongoose,但任何适配器的示例——甚至是直接的 MongoDB 查询——都很酷。
我见过一种方法,可以为每个文档添加一个字段,为每个字段生成一个随机值,并使用{rand: {$gte:rand()}} 每个我们想要随机化的查询。但是,我担心两个查询理论上会返回相同的集合。
【问题讨论】:
-
如果您可以“检索一个随机文档”,那么您可以通过重复检索多个,不是吗?
-
我认为这会效率低下——我需要它与 MySQL rand() 排序查询相提并论。