繁体   English   中英

Function 在 map 减少命令中无法识别,mongoDB (javascript)

[英]Function is not recognized in map reduce command, mongoDB (javascript)

我在 MongoDB 中尝试做的 map 减少有一些问题。 我定义的 function 在减少 function 中似乎不可见。 这是我的代码:

function getName(user_id){
    var users = db.users.aggregate({$project:{"_id":"$_id", "name":"$name"}});        
    users.forEach((it) => {if (user_id == it._id) return it.name;});    
    return "user not found"; 
}
var mapFunc = function(){ emit(this.user_id, this.book_id) };
var reduceFunc = function(key, values){return getName(key);};
db.booksToRecover.mapReduce(mapFunc, reduceFunc, {out:'users_to_recover_books_from'});

这就是我得到的: ![在此处输入图像描述

function 是在本地运行的 javascript 实例中定义的,而不是在服务器中。

为了使 function 可以从服务器调用,您需要在此处预定义它或在 reduce function 中包含定义。

但不要那样做。

减少 function 文档

reduce function 不应该访问数据库,即使执行读取操作。

改为使用带有$lookup阶段的聚合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM