Как отфильтровать поддокумент (массив) на основе некоторого предиката в публикации Метеор?

Я пытаюсь фильтровать не только поля, но и объекты внутри моего поля массива. Ссылаясь на пример ниже, для поля сегментов, я хочу, чтобы мой клиент получал только те объекты в массиве сегментов, где 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}}},...)

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

Другие вопросы по тегам