2016-10-29 2 views
0

Я пытаюсь фильтровать не только поля, но и объекты внутри поля моего массива. Ссылаясь на приведенный ниже пример для поля сегментов, я хочу, чтобы мой клиент только получить эти объекты в сегментах массива, где isReleased === trueКак фильтровать вспомогательный документ (массив) на основе некоторого предиката в публикации Meteor?

Пример схема

{ 
    _id:  123456, 
    segments: [ 
     { 
      name: 'Type A', 
      isReleased: false, 
     }, 
     { 
      name: 'Type B', 
      isReleased: false, 
     }, 
     { 
      name: 'Type C', 
      isReleased: true, 
     } 
    ], 
} 

Так в основном, я хочу, чтобы мой клиент просто получить ,

{ 
    _id:  123456, 
    segments: [ 
     { 
      name: 'Type C', 
      isReleased: true, 
     } 
    ], 
} 
+0

Возможный дубликат: [Получить только запрошенный элемент в массиве объектов в коллекции MongoDB] (http://stackoverflow.com/questions/3985214/retrieve-only-the-queried-element-in-an-object-array -в-MongoDB-коллекция) –

ответ

0

Вы можете использовать оператор $elemMatch. Запрос будет выглядеть так:

Schema.find({segments: {$elemMatch: {isReleased: true}}},...) 

Для получения более подробной информации вы можете проверить примеры ссылок.