Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在猫鼬中找到随机记录_Javascript_Mongodb_Mongoose - Fatal编程技术网

Javascript 如何在猫鼬中找到随机记录

Javascript 如何在猫鼬中找到随机记录,javascript,mongodb,mongoose,Javascript,Mongodb,Mongoose,如何在MongoDB中找到随机记录 我在StackOverflow上找到了多篇文章,但我无法理解它们。 例如: db.yourCollection.find().limit(-1).skip(yourRandomNumber).next() 我将如何在代码中执行它?(收集是用户) 获取随机记录的想法是查询所有匹配的记录,但只获取一条。这就是findOne()在没有给出任何标准的情况下所做的 然后,您需要在所有可能的匹配项中随机选取一个条目。这是通过以下方式实现的: 找出可能有多少个条目-我们对

如何在MongoDB中找到随机记录

我在StackOverflow上找到了多篇文章,但我无法理解它们。 例如:

db.yourCollection.find().limit(-1).skip(yourRandomNumber).next()
我将如何在代码中执行它?(收集是
用户


获取随机记录的想法是查询所有匹配的记录,但只获取一条。这就是
findOne()
在没有给出任何标准的情况下所做的

然后,您需要在所有可能的匹配项中随机选取一个条目。这是通过以下方式实现的:

  • 找出可能有多少个条目-我们对集合使用
    count()
    。请注意,如注释中所述,
    count
    在版本4中被弃用,应该使用or。不同之处在于精度/内存使用情况。这里有一篇帖子讨论了一下

  • 在我们的计数中找出一个随机数

  • 使用
    skip()

  • 下面是一个经过修改的代码段:

    使用mongoose从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”


    谢谢

    我正在与用户进行交互。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 
           });
    
        });