我想创建一个 Schema.statics.random
函数,让我从集合中获取一个随机元素。我知道本地 MongoDB 驱动程序有一个示例,但我无法在 Mongoose 中使用它。
最佳答案
我在 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
注意我稍微修改了代码以使其更具可读性。
关于javascript - Mongoose 集合中的随机文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14644545/