Как отфильтровать поддокумент (массив) на основе некоторого предиката в публикации Метеор?
Я пытаюсь фильтровать не только поля, но и объекты внутри моего поля массива. Ссылаясь на пример ниже, для поля сегментов, я хочу, чтобы мой клиент получал только те объекты в массиве сегментов, где isReleased === true
Пример схемы
{
_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,
}
],
}
1 ответ
Вы можете использовать оператор $elemMatch. Запрос будет выглядеть так:
Schema.find({segments: {$elemMatch: {isReleased: true}}},...)
Вы можете проверить примеры по ссылке для более подробной информации.