Для этого вам нужно будет использовать aggregate
, см. Код ниже
Parent.aggregate([
{
$lookup: {
from: 'child',
let: {
email_: "abc@example.com",
childId_: '$childId'
},
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: ['$email', '$$email_']
},
{
$eq: ['$_id', '$$childId_']
}
]
}
}
}
],
as: 'child'
}
},{
$unwind:'$child'
},{
$match:{
'child.name':{
$regex: "SearchKeyWord",
$options: 'i' // For case insensitive search
}
}
}
]);
Здесь мы сначала заполняем только child
, указав email_id
, используя $lookup
Затем мы используем регулярное выражение для фильтрации child
на основе поискового ключевого слова (я использовал регистр без учета регистра)
Теперь это даст вам список всех детей с соответствующими родителями, например [{parent_field_1:parent_value_1,......, child:{child_object}}]
Если вы хотите, чтобы все дети были от одних и тех же родителей, вы можете использовать $group
в своем последующем прогнозе