2014-11-24 82 views
1

從陣列具有特定屬性的所有對象。如果我有這樣的架構獲得在貓鼬

food = { 
    name : String, 
    favouriteFoods : [] 
} 

每個favoritefood元素,像這樣

var favoritefood = new Object; 
favoritefood.cuisine = 'indian'; 
favoritefood.flavor = 'spicy'; 

對象是可以查詢貓鼬讓所有favoritefood對象的flavor屬性設置爲「spicy」?

+0

使用[Array.prototype.filter]試用(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array /過濾) – elclanrs 2014-11-24 23:29:11

回答

0

您需要執行aggregate操作才能獲得按名稱分組的所有辛辣食物。

  • Match所有的食品,至少有一個辛辣喜愛的食物。
  • Unwind最喜歡的食物陣列。
  • Match辛辣的所有unwinded最喜歡的食物。
  • Group由食物名稱。
  • Project他們。

的代碼:

Food.aggregate([ 
{$match:{"favouriteFoods.flavor":"spicy"}}, 
{$unwind:"$favouriteFoods"}, 
{$match:{"favouriteFoods.flavor":"spicy"}}, 
{$group:{"_id":"$name","spicyFoods":{$push:"$favouriteFoods"}}, 
{$project:{"_id":0,"name":"$_id","spicyFoods":1}} 
],function(err,res){ 
// console.log(res); 
})