javascript - Mongoose 集合中的随机文档

标签 javascript node.js mongoose

我想创建一个 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/

相关文章:

node.js - 命中 Express 端点后在 socket.io 中发出

node.js - 如何保护生产中的 mongoDB 连接

node.js - 如何在 Mongoose 中设置数据库名称和集合名称?

javascript - Yii Form 的 Angular 表单验证

javascript - 在 KineticJS 中拖动多个元素(不分组)

javascript - 比较两个数组并将其连接

javascript - 从外部网络访问时缓存 css/js

mongodb - 使用 Mongoose 从 MongoDB 文档中删除一个键

node.js - protractor-jasmine2-screenshot-reporter 未在所需文件夹中生成屏幕截图

javascript - 使用 mongooseSchema.pre ('save' ) 方法时,node.js 中未处理的 promise 拒绝