mongodb - 如何从 MongoDB 获取随机记录?

我希望从庞大的集合(1 亿条记录)中获取随机记录。

最快、最有效的方法是什么?

数据已经存在,没有可以生成随机数并获取随机行的字段。

最佳答案

从 MongoDB 3.2 版本开始,您可以使用 $sample 从集合中获取 N 个随机文档聚合管道运算符:

// Get one random document from the mycoll collection.
db.mycoll.aggregate([{ $sample: { size: 1 } }])

如果您想从集合的过滤子集中选择随机文档,请将 $match 阶段添加到管道:

// Get one random document matching {a: 10} from the mycoll collection.
db.mycoll.aggregate([
    { $match: { a: 10 } },
    { $sample: { size: 1 } }
])

如注释中所述,当size大于1时,返回的文档样本中可能存在重复。

https://stackoverflow.com/questions/2824157/

相关文章:

mongodb - 如何在 MongoDB shell 中打印出 20 多个项目(文档)?

node.js - 如何在 Node.js Web 应用程序中管理 MongoDB 连接?

mongodb - 如何导出 MongoDB 中的所有集合?

node.js - Mongoose 中的 "__v"字段是什么

javascript - 如何使用 Node.js Mongoose 删除文档?

mongodb - 向 MongoDB 集合中的每个文档添加新字段

mongodb - 在 MongoDB 中实现数据版本控制的方法

javascript - cursor.forEach() 中的 "continue"

mongodb - 如何从 MongoDB 文档中完全删除字段?

mongodb - NoSQL (MongoDB) vs Lucene (或 Solr) 作为你的数