Javascript MongoDB$sample的其他参数

Javascript MongoDB$sample的其他参数,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我已经成功地使用Node.js中的db.collection('example').aggregate({$sample:{size:1}}})从我的集合中检索了一个随机样本,但是,我想添加一个额外的参数,仅从某个子集中对一个项目进行采样。我尝试添加一个额外的参数(例如,db.collection('example').aggregate({sampleParam:{$gte:1}}},{$sample:{size:1}}}),但没有成功 我也理解.skip可以实现这一点,但效率很低。在使用$s

我已经成功地使用Node.js中的
db.collection('example').aggregate({$sample:{size:1}}})
从我的集合中检索了一个随机样本,但是,我想添加一个额外的参数,仅从某个子集中对一个项目进行采样。我尝试添加一个额外的参数(例如,
db.collection('example').aggregate({sampleParam:{$gte:1}}},{$sample:{size:1}}})
,但没有成功


我也理解
.skip
可以实现这一点,但效率很低。

在使用
$sample
之前,只需添加一个
$match
阶段,如下所示:

db.collection('example').aggregate([
  {$match: 
      {sampleParam: {$gte: 1}}
  }, 
  {$sample: {size: 1}}
]); 

您的查询无法正常工作,因为
sampleParam
不是一个
管道阶段
,您可以尝试以下操作:

{ "_id" : 11, "score" : 11, "name" : "ahn", "q1" : true, "q2" : true }
{ "_id" : 12, "score" : 12, "name" : "dane", "q1" : true, "q2" : true }
{ "_id" : 13, "score" : 13, "name" : "spec", "q1" : true, "q2" : true }
{ "_id" : 14, "score" : 14, "name" : "axe", "q1" : true, "q2" : true }
{ "_id" : 15, "score" : 15, "name" : "soplo", "q1" : true, "q2" : true }
{ "_id" : 16, "score" : 16, "name" : "tepe", "q1" : true, "q2" : true }
我想我有一个用户集合,所以:

> db.user.aggregate([{$match:{score: {$gt:10}}}, {$sample:{size:1}}])
上面的查询返回大于10的所有
分数
,并显示一个
大小