![](/img/trans.png)
[英]Which “kind” of JavaScript is available inside a map and/or reduce function in MongoDB?
[英]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 中包含定义。
但不要那样做。
reduce function 不应该访问数据库,即使执行读取操作。
改为使用带有$lookup阶段的聚合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.