Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mongodb mapreduce finalize函数不是';t从javascript工作(相同的代码从shell工作)_Javascript_Node.js_Mongodb_Shell_Mapreduce - Fatal编程技术网

mongodb mapreduce finalize函数不是';t从javascript工作(相同的代码从shell工作)

mongodb mapreduce finalize函数不是';t从javascript工作(相同的代码从shell工作),javascript,node.js,mongodb,shell,mapreduce,Javascript,Node.js,Mongodb,Shell,Mapreduce,我有以下奇怪的情况。我已经开始为MongoDB编写map/reduce作业。现在,除了“Finalize”步骤外,我的代码(见下面代码中的Map/Reduce/Finalize函数)正在运行。通过mongo shell运行的相同代码正在生成预期的结果(基于arraylength,将file_count字段添加到结果中。JS和shell命令都会平均填充每个磁盘集合的文件(每个磁盘的文件数组包含相同的结果)。我已经尝试将jsMode设置为true/false 有什么帮助/建议吗 谢谢 砂光机 var

我有以下奇怪的情况。我已经开始为MongoDB编写map/reduce作业。现在,除了“Finalize”步骤外,我的代码(见下面代码中的Map/Reduce/Finalize函数)正在运行。通过mongo shell运行的相同代码正在生成预期的结果(基于arraylength,将file_count字段添加到结果中。JS和shell命令都会平均填充每个磁盘集合的文件(每个磁盘的文件数组包含相同的结果)。我已经尝试将jsMode设置为true/false

有什么帮助/建议吗

谢谢

砂光机

var mongojs = require('mongojs');

var db = mongojs('mongodb://super.local/sha', ['files', 'files_per_disc']);

db.on('error', function(err) {
    console.log('database error', err)
})

db.on('connect', function() {
    console.log('database connected')
})

var files_per_disc = {};

files_per_disc.execute = function() {
    console.log('execute');

    var mapper = function() {
        var key = this.disc; // Disc
        var mapObject = {
            files: [this.filename]
        };
        if (this.filesize > 5000000000) {
            emit(key, mapObject);
        }
    };

    var reducer = function(key, values) {
        var reducedObject = {
            files: []
        };
        values.forEach(function(value) {
            value.files.forEach(function(item) {
                if (reducedObject.files.indexOf(item) == -1) {
                    reducedObject.files.push(item);
                }
            });
        });
        return reducedObject;
    };

    var finalizer = function(key, reducedObject) {
        if (reducedObject.files) {
            reducedObject.file_count = reducedObject.files.length;
        }
        return reducedObject;
    };

    db.files.mapReduce(
        mapper,
        reducer, {
            jsMode: false,
            out: 'files_per_disc',
            finalize: finalizer
        },
        function(err, result) {
            if (err) {
                return console.log(err)
            };
            return console.log(result);
        }
    );
};

module.exports = files_per_disc;

嗯…挖得更深一点。这是一个与“mongojs”包相关的问题。在“重构”我的代码以使用“mongodb”NPM包之后,它开始工作了……。我打开了一个github问题