2014-11-24 3 views
1

Если у меня есть эта схемаПолучение всех объектов из массива с конкретным свойством в Мангусте

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

и каждый favoritefood элемент является объектом, как так

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

возможно запросить мангуст, чтобы получить все У объектов любимых продуктов свой атрибут аромата установлен на «пряный»?

+0

Попробуйте использовать [Array.prototype.filter] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array /фильтр) – elclanrs

ответ

0

Вам необходимо выполнить операцию aggregate, чтобы получить все пряные продукты фавуирита, сгруппированные по названию.

  • Match все продукты питания, имеющие по крайней мере одну пряную любимую пищу.
  • Unwind любимая еда.
  • Match все незамороженные любимые продукты, которые являются пряными.
  • 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); 
})