gpt4 book ai didi

javascript - 如何在 Mongoose 中找到随机记录

转载 作者:IT老高 更新时间:2023-10-28 13:09:06 25 4
gpt4 key购买 nike

如何在 MongoDB 中找到随机记录?

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

db.yourCollection.find().limit(-1).skip(yourRandomNumber).next()

我将如何在我的代码中执行它? (集合是用户)

User.findOne(RANDOM PLAYER).then(result) {
console.log(result);
}

最佳答案

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

然后,您将希望在所有可能的匹配项中选择一个随机条目。这是由以下人员完成的:

  1. 找出可能有多少条目 - 我们在集合上使用 count() 来实现这一点。请注意,如评论中所述,count 在版本 4 中已弃用,应使用 estimatedDocumentCountcountDocuments反而。不同之处在于精度/内存使用等。这是 SO发帖讨论一下。

  2. 在我们的计数范围内找出一个随机数。

  3. 使用 skip() “跳过”到所需的匹配项并返回。

这是从 SO answer 修改的片段:

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

关于javascript - 如何在 Mongoose 中找到随机记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39277670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com