$sample(随机抽样)
最后更新:2026-10-09
$sample(随机抽样)
$sample 从集合中随机抽取指定数量的文档,用于抽样分析、测试数据或随机推荐。它不一定全量扫描集合,随机性也不保证完全均匀,适合作为近似随机抽样。$sample 输出的文档顺序是随机的,与输入顺序无关。
| 分类 | 核心阶段 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $sample: { size: <正整数> } }
⚙️ 参数
| size | 要抽取的文档数量,必须为正整数。 |
|---|
返回值:随机抽出的文档流
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $sample:随机抽 5 个用户
db.users.aggregate([
{ $sample: { size: 5 } }
])
运行结果:
// 每次运行结果可能不同
📌 注意事项
- 抽样结果不保证均匀,重复执行结果不同
- size 必须为正整数
- 与 $limit 不同:它是随机挑选,顺序不可预测
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q$sample 的随机是均匀的吗?
A不是严格均匀,它用伪随机机制,适合近似抽样与测试场景。
Q$sample 和 $limit 有什么区别?
A$limit 取管道顺序前 N 条;$sample 随机挑选 N 条,顺序不确定。
Q可以先 $match 再 $sample 吗?
A能,$sample 是普通阶段,可放在 $match 之后对过滤结果抽样。