Javascript MongoDB$sample的其他参数
我已经成功地使用Node.js中的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
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的所有分数
,并显示一个大小