我想创建一个Schema.statics.random从集合中获取随机元素的函数。我知道有一个本机MongoDB驱动程序的示例,但是我无法在Mongoose中运行它。
Schema.statics.random
我在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
注意: 我对代码进行了一些修改,以使其更具可读性。