Javascript 如何在猫鼬中找到随机记录
如何在MongoDB中找到随机记录 我在StackOverflow上找到了多篇文章,但我无法理解它们。 例如:Javascript 如何在猫鼬中找到随机记录,javascript,mongodb,mongoose,Javascript,Mongodb,Mongoose,如何在MongoDB中找到随机记录 我在StackOverflow上找到了多篇文章,但我无法理解它们。 例如: db.yourCollection.find().limit(-1).skip(yourRandomNumber).next() 我将如何在代码中执行它?(收集是用户) 获取随机记录的想法是查询所有匹配的记录,但只获取一条。这就是findOne()在没有给出任何标准的情况下所做的 然后,您需要在所有可能的匹配项中随机选取一个条目。这是通过以下方式实现的: 找出可能有多少个条目-我们对
db.yourCollection.find().limit(-1).skip(yourRandomNumber).next()
我将如何在代码中执行它?(收集是用户
)
获取随机记录的想法是查询所有匹配的记录,但只获取一条。这就是
findOne()
在没有给出任何标准的情况下所做的
然后,您需要在所有可能的匹配项中随机选取一个条目。这是通过以下方式实现的:
count()
。请注意,如注释中所述,count
在版本4中被弃用,应该使用or。不同之处在于精度/内存使用情况。这里有一篇帖子讨论了一下
skip()
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”
谢谢 我正在与用户进行交互。findOne().skip(rand)。然后(函数(结果){@Yashua@maria我已经发布了一个详细的答案,可能与我想要的完全相同。谢谢!干得好!!这就是我想要的。count()-collection.count已弃用,将在将来的版本中删除。请改用collection.countDocuments或collection.estimatedDocumentCount。
引用错误:未定义查询
-从何处设置查询?
// 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)
})
})
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
});
});