在MongoDB异步中随机选择行

时间:2015-01-25 17:08:08

标签: node.js mongodb asynchronous random

所以我已经阅读了有关如何获取随机行选择的其他帖子,但对我来说都没有。

Random record from MongoDBHow to find random records in mongodb都建议过时的解决方案不再编译。

不能在我的数据库中添加额外的随机字段。

我已经提出了以下代码,但它也无效。

exports.randomX = function(req, res) 
{
    var x = req.params.x;
    db.collection('table', function(err, collection) {

        collection.count(function(err, count) {
            var r;
            var arr = [];
            for(var i=1; i<=x; i++)
            {
                r = Math.floor(Math.random() * count);
                collection.find().limit(1).skip(r).toArray(function(err, items) 
                {
                    arr.push(items[0]);

                    if(arr.length === x)
                        res.send(arr);
                });
            }
        });
    });
}

1 个答案:

答案 0 :(得分:1)

不确定这是否是您唯一的问题,但x将是一个字符串,因此如果您想将其与arr.length进行比较,则应将其解析为数字或仅使用{{1}而不是==

===