一尘不染

猫鼬集合中的随机文件

node.js

我想创建一个Schema.statics.random从集合中获取随机元素的函数。我知道有一个本机MongoDB驱动程序的示例,但是我无法在Mongoose中运行它。


阅读 206

收藏
2020-07-07

共1个答案

一尘不染

我在GitHub Gist中找到了此Mongoose
Schema静态函数,该函数应该可以实现您所追求的。它计算集合中文档的数量,然后在跳过随机数量后返回一个文档。

QuoteSchema.statics.random = function(callback) {
  this.count(function(err, count) {
    if (err) {
      return callback(err);
    }
    var rand = Math.floor(Math.random() * count);
    this.findOne().skip(rand).exec(callback);
  }.bind(this));
};

资料来源:https :
//gist.github.com/3453567

注意: 我对代码进行了一些修改,以使其更具可读性。

2020-07-07