コレクションからランダムな要素を取得する関数を作成したいと考えていますSchema.statics.random
。ネイティブ MongoDB ドライバーの例があることは知っていますが、Mongoose で動作させることができません。
ベストアンサー1
GitHub Gist でこの Mongoose Schema 静的関数を見つけました。これで目的を達成できるはずです。コレクション内のドキュメントの数をカウントし、ランダムな数をスキップした後、1 つのドキュメントを返します。
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));
};
ソース:出典: github.com
注意読みやすくするためにコードを少し修正しました。