“文档” 菜单
文档首页
/
MongoDB Manual
/ / /

$sample(聚合)

在此页面上

  • 定义
  • 行为
  • 例子
$sample

从输入文档中随机选择指定数量的文档。

$sample 阶段采用以下语法:

{ $sample: { size: <positive integer N> } }

N 是随机选择的文档数量。

如果以下所有条件都成立,则 $sample 将使用伪随机游标来选择 N 文档:

  • $sample 是管道的第一个阶段。

  • N 少于集合中文档总数的 5%。

  • 该集合包含 100 多个文档。

如果前面有任何条件是错误的,$sample

  • 读取之前的聚合阶段或集合扫描输出的所有文档。

  • 执行随机排序以选择N个文档。随机排序受到排序内存限制。

    注意

    视图是聚合管道的结果。当您在视图上使用 $sample 时,MongoDB 会将该阶段附加到视图聚合管道语法的末尾。因此,视图上的 $sample 阶段永远不是第一阶段,并且始终会导致集合扫描。

本部分展示了使用以下 users 集合的聚合管道示例:

db.users.insertMany( [
{ _id : 1, name : "dave123", q1 : true, q2 : true },
{ _id : 2, name : "dave2", q1 : false, q2 : false },
{ _id : 3, name : "ahn", q1 : true, q2 : true },
{ _id : 4, name : "li", q1 : true, q2 : false },
{ _id : 5, name : "annT", q1 : false, q2 : true },
{ _id : 6, name : "li", q1 : true, q2 : true },
{ _id : 7, name : "ty", q1 : false, q2 : true }
] )

以下聚合操作从集合中随机选择 3 个文档:

db.users.aggregate(
[ { $sample: { size: 3 } } ]
)

此操作会返回三个随机文档。

提示

另请参阅:

后退

$replaceWith(聚合)

来年

$search(聚合)

在此页面上