【问题标题】:How to find or get random records or documents in a mongodb using Mongoose如何使用 Mongoose 在 mongodb 中查找或获取随机记录或文档
【发布时间】:2021-05-08 15:27:10
【问题描述】:

我尝试找到一种使用 mongoose 在 MongoDB 中获取随机记录/文档的方法,但没有成功。

四 (4) 年前的The solution I found here failed 并没有解决我的问题,因为它倾向于根据生成的随机数跳过一些文档。

问题是如果你的数据库中有3个文档并且生成的随机数是3,按照here的规定执行以下操作:

User.findOne().skip(random).exec(
    function (err, result) {
      // Tada! random user
      console.log(result) 
    })

...将使.skip(3) 跳过整个三个文档并返回 [](404 错误)。

我想要的是在任何时候随机播放记录User.find()

【问题讨论】:

    标签: node.js mongodb express mongoose


    【解决方案1】:

    这就是我解决这个问题的方法

    const users = await User.find().limit(50); // limit can be any number, each time you make a request, values will always be returned if have records is in your MongoDB
    
    const randomUsers = users.sort(() => Math.random() - 0.5);
    
    return res.status(200).send({ success: true, message: 'success: random users', data: randomUsers });
    

    每当您提出请求时,您肯定会得到一条记录,但会根据生成的随机数对列表进行打乱、重新排序或随机化。

    相信这为您解决了类似的问题!

    【讨论】:

      猜你喜欢
      • 2019-01-13
      • 2014-01-13
      • 2017-04-01
      • 1970-01-01
      • 2015-02-15
      • 2016-01-22
      • 2017-04-15
      • 2013-02-06
      • 1970-01-01
      相关资源
      最近更新 更多