2016-11-27 87 views
1

我有一個記錄數很少的mongodb集合。 我想迭代我的集合中的記錄並返回一個customObject。 對於每條記錄,我想對它進行一些計算,並相應地在我的customObject中包含一個條目,如果它符合我的條件,然後最終返回customObject。迭代mongo db中的記錄並返回自定義對象

我使用mongoose.js

做它說我的紀錄是

Friends:{ 
 
    {name:"John", money_lent:100}, 
 
    {name:"Tom", money_lent:100} 
 
    {name:"Tom", money_lent:100} 
 
    {name:"Jill", money_lent:100} 
 
    {name:"John", money_lent:100} 
 
    {name:"Nate", money_lent:100} 
 
    {name:"John", money_lent:100} 
 
    {name:"Jill", money_lent:100} 
 
    {name:"Nate", money_lent:100} 
 
    {name:"Nate", money_lent:100} 
 
    {name:"Nate", money_lent:100} 
 
    {name:"Rob", money_lent:100} 
 
    
 
}

我想計算和對象等,並返回我的控制器使用

{ 
 
    {name:"John", times_money_lent:2} 
 
    {name:"Tom", times_money_lent:2} 
 
    {name:"Jill", times_money_lent:2} 
 
    {name:"Nate", times_money_lent:4} 
 
    {name:"Rob", times_money_lent:1} 
 
}

回答

0

朋友需要像

Friends: [...] 

因爲它是一個列表。我在你的問題中看到的語法無效。與朋友的列表,你可以做

Friends.map (function (friend) { 
    return { name: friend.name, 
      times_money_lent: friend.money_lent/10 }; 
}); 

或者任何

+0

記錄都保存在MongoDB中 –

+0

是啊,但你說你用貓鼬來檢索他們,所以他們現在在你的JavaScript代碼,對不對? – tjb1982

0

假設你已經有了從蒙戈獲取數據,然後ü可以做這樣的計算:

var result = new Array(); 
Friends.map(function (friend) { 
    var r = grep(result, function (val) { 
     return val.name == friend.name; 
    }); 
    if(r.length == 0) { 
     result.push({name:friend.name, times_money_lent:1} 
    } else { 
     r[0].times_money_lent ++; 
    } 
}); 

順便說一句,您需要安裝grep-from-array才能使用grep!否則你需要自己完成搜索功能。

相關問題