gpt4 book ai didi

node.js - 来自 MongoDB 的随机记录

转载 作者:太空宇宙 更新时间:2023-11-04 00:48:45 25 4
gpt4 key购买 nike

这是我第一次在 StackOverflow 上提问,对于或多或少的重复或者我发布的任何错误内容,我深表歉意。我正在尝试遵循 Random record from MongoDB 中的代码,但仍然在努力从 Node.js 中的 MongoDB 中检索 4 条随机记录。

在 Mongo shell 中,我可以使用以下命令成功检索 4 个随机记录:

db.reccs.find( { genre: { $in: ['fantasy']} } ).limit(4).skip(Math.random() *   db.reccs.count( { genre: { $in: req.query.test} } ))

但是,在我的 Node.js server.js 文件中,此代码没有返回错误,并且它找到的前 4 条记录,而不是随机的 4 条:

  app.get('/comics', function(req, res) {
var comics = db.collection('reccs').find( { genre: { $in: req.query.test} } ).limit(4).skip(Math.random() * db.collection('reccs').count( { genre: { $in: req.query.test} } )).toArray(function(error, comics) {
if (error) {console.dir(error+"error!")}

res.send(comics)
}) })

我完全被难住了,所以我很感激任何关于为什么这在 Mongo shell 中有效但在 server.js 中无效的想法。谢谢!

编辑 - 我相信这个问题是不同的,因为它与 Mongo shell 无关,而是关于 Node.js - 链接问题中的解决方案绝对可以在 shell 中工作,只是不能在 Node.js 中工作。

编辑2 - 如果有人遇到过这个,这个MongoDB count() undefined加上下面的评论应该会有所帮助!

最佳答案

Math.random() * 有些数字不会给你整数...

console.log(Math.random() * 22)
// 12.282829137984663

因此你的跳过(可能)永远不会执行。尝试一下

var numRecordsToSkip = Math.round(Math.random() * numRecords, 0)
.limit(4).skip(numRecordsToSkip) ...

关于node.js - 来自 MongoDB 的随机记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33470903/

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