MongoDB聚合: $sample

使用$sample可以从输入文档中随机选择指定数量的文档,可以用于采样或预览。

语法

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

使用

如果下列条件全部为真,$sample将使用伪随机游标来选择N个文档:

  • $sample处于管道的第一个阶段
  • N小于集合中文档总数的5%
  • 集合中文档数量大于100

如果上面的条件为假,$sample

  • 读取前一个聚合阶段或集合中的所有文档。
  • 执行随机排序,选择N个文档。

注意:随机排序受排序内存限制。

举例

一个名为users的集合有以下文档:

{ "_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 } } ]
)

操作会返回三个随机文档

你可能感兴趣的:(mongodb,mongodb)