簡體   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