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) ...