MongoDB - 返回X个随机记录

时间:2017-11-24 13:07:54

标签: javascript node.js mongodb

在我的node.js服务器中,我试图从我的集合中返回4个随机记录。

这是我当前的代码,问题是目前它从我的集合中返回0-4个随机记录,而我想每次返回4个(不多于不少)随机记录。

db.collection('articles')
.find()
.limit( 4 )
.skip(Math.round(Math.random() * 4))
.sort("date", -1).toArray()

感谢任何帮助或建议 - 提前谢谢!

  

我看了一些类似的问题,但他们似乎只是   生成0-X记录之间的随机记录,而不是设定的数量。

1 个答案:

答案 0 :(得分:2)

您可以使用$sample聚合管道。

  

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

     

$sample阶段具有以下语法:

     

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

E.g。此代码返回4个随机文档:

db.collection('articles').aggregate([
   { $sample: { size: 4 } }
]);

如果您需要按某些标准选择x随机文档,则只需添加$match