У меня сложный объект, хранящийся в моем mongodb, выглядит следующим образом:
const collectionFromMongodb = [
{
id: ObjectID(),
text: 'blabla',
data: {
foo: [
{ id: ObjectID(), status: 'ready' },
{ id: ObjectID(), status: 'notready' },
],
bar: [
{ id: ObjectID(), status: 'ready' },
{ id: ObjectID(), status: 'notready' },
],
},
},
];
Я хочу запросить весь объект (find
), но возвращаемый объект будет в foo
и bar
только объект, который status
равен ready
. (data.foo.[?].status === 'ready' and/or data.bar.[?].status === 'ready'
).
Я ожидаю получить весь объект (так как мой фильтр работает только на data
), но поля foo и bar содержат только status
из 'ready'.
Примечание. В foo
и bar
у меня размер данных 1 МБ.
Как это сделать с помощью запроса mon goose? это возможно сделать? или просто запросите все объекты и используйте filter
и map
?
Я сделал это, но не работает, потому что он получает все статусы в data.foo
:
find('data.foo': { $elemMatch: { status: 'ready' })