首页 > 解决方案 > 如何使用 Mongoose 在 mongodb 中查找或获取随机记录或文档

问题描述

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

我在四 (4) 年前在这里找到的解决方案失败并没有解决我的问题,因为它倾向于根据生成的随机数跳过一些文档。

问题是,如果您在数据库中有 3 个文档并且生成的随机数是 3,请按照此处指定的方式执行以下操作:

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

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

我想要的是在任何时候洗牌User.find()

标签: node.jsmongodbexpressmongoose

解决方案


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

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 });

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

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


推荐阅读