Как найти случайная запись в Mongoose [дубликат]
этот вопрос уже есть ответ здесь:
- случайная запись из MongoDB 24 ответов
How can i find random records in mongodb?
Я нашел несколько статей здесь, в stackoverflow, но я не мог их понять. например:
db.yourCollection.find().limit(-1).skip(yourRandomNumber).next()
как бы я выполнил его в своем коде? (коллекция является пользователем)
User.findOne(RANDOM PLAYER).then(result) {
console.log(result);
}
2 ответов
идея становится случайной записи для запроса всех записей, но только одна. Это findOne()
делает без каких-либо критериев.
затем вы захотите выбрать случайную запись во всех возможных матчах. Это делается с помощью:
узнайте, сколько возможных записей может быть - мы используем
count()
о коллекции для этого.придумайте случайное число внутри нашего рассчитывать.
использовать
skip()
чтобы "пропустить" до нужного матча и вернуть его.
вот фрагмент, измененный из этого так что ответ:
// Get the count of all users
User.count().exec(function (err, count) {
// Get a random entry
var random = Math.floor(Math.random() * count)
// Again query all users but only fetch one offset by our random #
User.findOne().skip(random).exec(
function (err, result) {
// Tada! random user
console.log(result)
})
})
чтобы получить случайный документ(ы) из MongoDB с помощью мангуста.
limitrecords=10;
function getRandomArbitrary(min, max) {
return Math.ceil(Math.random() * (max - min) + min);
}
var userschema = new Schema({
name: String
});
User = mongoose.model('User', userschema);
User.count({your_query},function(err,count){
var skipRecords = getRandomArbitrary(1, count-limitrecords);
query.skip(skipRecords); // Random Offset
query.exec(function(err,result){
console.log(result); // 10 random users
});
});
Это пример для 10 случайных записей, вы можете установить "limitrecords" в соответствии с вашим требованием.
спасибо!