для примера
House: {
owner: ObjectId,
books: [ObjectId],
pets: [ObjectId]
}
И вы хотите получить все Дома, в которых такой-то овнер, такие-то книги, и такие-то животные, то Монго эту проблему решить не способна получается? Я должен сначала запросить все House, сделать population, и уже на уровне приложения отфильтровать нужные?
Посмотри aggregation framework mongodb
Вам проще сначала загрузить нужных owner и pet, а потом по их _id найти нужные дома
Я тоже так думал. Но если представить что у меня в модели House очень много разных свойств(рефов), то мне нужно делать очень много запросов к ним по отдельности, прежде чем я соберу список House который мне нужен. Хотелось бы что бы за эту логику отвечала база, а не приложение. Вообще мне кажется что запрашивать данные сразу фильтруя по разным рефам - это довольно базовый механизм, вместо того что бы делать это в приложении.
Вообще философия монги в том чтобы не было такой нормализации данных как в реляционных бд 3nf это все. А то что нужно по максимуму хранить все в формате одного документа
Если вы не знаете _id объектов для фильтрации, вам всё равно придётся сначала найти эти объекты и получить их id. В концепции любого хранилища это будут подзапросы, явные или нет. Так что это нормальное поведение. Но похоже что у вас частный случай паттерна Entity Value Attribute. https://t.me/mongodb_ru/87488. Поищите по группе по словам value attribute, там будут разные кейсы
Обсуждают сегодня