Mirki, jest sobie baza ze schematem, który w dużym uproszczeniu wygląda tak:
ASchema({ name: String }) // model A BSchema({ x: String, y: [{ type: Schema.Types.ObjectId, ref: 'A' }] }) // model B Teraz potrzebuję pobrać wszystkie obiekty B, które pod tablicą y zawierają obiekty A z konkretną wartością pola name. Wychodzi na to, że musiałbym wykonać najpierw .populate('y'), a dopiero potem przeszukać kolekcję pod potrzebnym mi kątem. Jak to ugryźć bez zaciągania całego zbioru i filtrowania go "normalnym" JSem? #mongodb #mongoose #nodejs #javascript #programowanie
ASchema({ name: String }) // model A
BSchema({ x: String, y: [{ type: Schema.Types.ObjectId, ref: 'A' }] }) // model B
Teraz potrzebuję pobrać wszystkie obiekty B, które pod tablicą
y
zawierają obiekty A z konkretną wartością polaname
. Wychodzi na to, że musiałbym wykonać najpierw.populate('y')
, a dopiero potem przeszukać kolekcję pod potrzebnym mi kątem. Jak to ugryźć bez zaciągania całego zbioru i filtrowania go "normalnym" JSem?#mongodb #mongoose #nodejs #javascript #programowanie
ModelB.find()
.populate({
path: 'y',
match: { name: 'Tojtek' }
})
.exec()
.then(users => {
users = users.filter(doc => {
return doc.y !== null;
});
console.log(users);
})
.catch(err => {
console.log(err);
});