Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
Node.js mongodb mapreduce NodeJ减少返回的嵌套对象而不是值_Node.js_Mongodb_Mapreduce_Nested_Reduce - Fatal编程技术网

Node.js mongodb mapreduce NodeJ减少返回的嵌套对象而不是值

Node.js mongodb mapreduce NodeJ减少返回的嵌套对象而不是值,node.js,mongodb,mapreduce,nested,reduce,Node.js,Mongodb,Mapreduce,Nested,Reduce,我是mongodb的新手,可能是我错过了一些奇怪的选项,或者是其他什么,但是我的reduce函数有时会返回嵌套对象,而不是对象中的值 这里是我的功能 var map = function () { emit( this.symbol, this.value); }; var reduce1 = function (key, values) { var sum = Array.sum(values); return sum; } var reduce2 = funct

我是mongodb的新手,可能是我错过了一些奇怪的选项,或者是其他什么,但是我的reduce函数有时会返回嵌套对象,而不是对象中的值

这里是我的功能

var map = function () {
    emit( this.symbol, this.value);
};

var reduce1 = function (key, values) {
    var sum =  Array.sum(values);
    return sum;
}

var reduce2 = function (key, values) {
    var sum =  Array.sum(values);
    return { sum : sum };
}
使用reduce1时,输出是完美的,但使用reduce2时,I有时将嵌套对象作为和值,而不是它自身作为下面的输出捕获的值

{u id:“STANL”,“value:{”sum:“[对象]0.99849857369507570.75736597102254950.88874422199529520.96082746522239491.14145582711759231.48978478848374980.90384569740327051.19704634790183520.88402968789822790.89298097198428821.29725185407638041.14841485460061481.09300962993201020.8907340112179960.96429537804144251.0227290260333571.04124365277301761.20668054319056450.99881383888825951.09970609158237950.75072708303315081.33870315588283641.3228261565037411.1991018787824881.24721640669130341.34837757946851490.80527964298505161.03347018232696650.68659975004394341.0242879181930671.35051628955444110.88796458999640491.46867330372019441.11862899303530841.09569628690573161.22322404865043240.71685393857070531.03446518877196870.92802251988624730.80307471198310821.23238958977232230.95043282711668911.204766056391251.06854713071140050.87119931348936911.15116766755811570.99578368720424220.95643964126054120.9162666117944730.97027742521994781.23653239202411761.03936602096239541.03923426775021670.89428017311011421.22995444926102810.89276806244443620.83134315618311790.88394094177891110.85125414239730950.82012388288529131.11068031460715581.39161712446953860.86701942697230821.1038005755665747“}

以前有人遇到过这个吗

我的mapReduce函数命令如下所示

var Coll = db.collection('Moves');
try {
    Coll.mapReduce(map, reduce, 
        { 
            out : { inline: 1 },
            query : { SOME QUERY }
        }, 
        function(err, collection) {
            console.log(JSON.stringify(collection));
            db.close();
            return;
        });
}
catch(e) {
    console.log("error:"+e);
    db.close();
}
天哪!!!!!!!!!!!!!!!!!!。。。 隐马尔可夫模型。。。对不起,我错过了文件

由于可以对同一个键多次调用reduce函数,因此以下属性必须为true:

返回对象的类型必须与映射函数发出的值的类型相同,以确保以下操作为真:

reduce(键[C,reduce(键[A,B]))==reduce(键[C,A,B])

reduce函数必须是幂等函数。确保以下陈述属实:

reduce(key,[reduce(key,valuesArray)]==reduce(key,valuesArray)

valuesArray中元素的顺序不应影响reduce函数的输出,因此以下语句为真:

reduce(键[A,B])==reduce(键[B,A])

var Coll = db.collection('Moves');
try {
    Coll.mapReduce(map, reduce, 
        { 
            out : { inline: 1 },
            query : { SOME QUERY }
        }, 
        function(err, collection) {
            console.log(JSON.stringify(collection));
            db.close();
            return;
        });
}
catch(e) {
    console.log("error:"+e);
    db.close();
}