【问题标题】:Random selection of rows in MongoDB async在 MongoDB 异步中随机选择行
【发布时间】:2015-01-25 17:08:08
【问题描述】:

所以我已经阅读了有关如何选择随机行的其他帖子,但没有一个对我有用。

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

【问题讨论】:

    标签: node.js mongodb asynchronous random


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-06
      • 2017-01-03
      • 2010-11-19
      • 2011-06-30
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      相关资源
      最近更新 更多