map reduce 命令中无法识别函数,mongoDB (javascript)

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

我在 MongoDB 尝试做的 map reduce 有一些问题。我定义的一个函数在 reduce 函数中似乎不可见。 这是我的代码:

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

这是我得到的:

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

为了可以从服务器调用该函数,您需要在服务器上对其进行预定义或将定义包含在 reduce 函数中。

但不要那样做。

来自reduce function documentation

The reduce function should not access the database, even to perform read operations.

看看在 $lookup 阶段使用聚合。