MongoDB的随机logging
这是我第一次问StackOverflow的问题,我很抱歉,或多或less地重复或如果我发布了任何不正确的东西。 我试图按照从MongoDB的随机logging中的代码,但仍努力从我的节点MongoDB中检索4个随机logging。
在Mongo shell中,我可以用这个成功地检索4个随机logging:
db.reccs.find( { genre: { $in: ['fantasy']} } ).limit(4).skip(Math.random() * db.reccs.count( { genre: { $in: req.query.test} } ))
但是,在我的Node.js server.js文件中,这段代码没有返回任何错误,并且find了前四个logging,而不是一个随机的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 – 在链接问题的解决scheme绝对工作在shell中,而不是在Node.js.
编辑2 – 如果有人遇到这个,这个MongoDB count()未定义与下面的评论应该帮助!
Math.random()*一些数字不会给你整数…
console.log(Math.random() * 22) // 12.282829137984663
因此你的跳过(可能)永远不会执行。 尝试
var numRecordsToSkip = Math.round(Math.random() * numRecords, 0) .limit(4).skip(numRecordsToSkip) ...