Проблема: я хочу добиться внутреннего соединения в пн goose для модели, которая имеет динамический c ref и прямой ref для другой модели (моделей). Просьба ссылаться на образец схемы и модели ниже.
const schema1 = mongoose.schema({
on: {
type: Schema.Types.ObjectId,
required: true,
refPath: 'onModel'
},
onModel: {
type: String,
required: true,
enum: ['Model2', 'Model3']
},
company: {
type: Schema.Types.ObjectId,
ref: 'Company'
}
});
const Model1 = mongoose.model('Model1', schema1);
const schema2 = mongoose.schema({
name: {
type: String,
maxlength: 100
},
email: {
type: String,
maxlength: 100
}
});
const Model2 = mongoose.model('Model2', schema2);
const schema3 = mongoose.schema({
name: {
type: String,
maxlength: 100
},
email: {
type: String,
maxlength: 100
}
});
const Model3 = mongoose.model('Model3', schema3);
const companySchema = mongoose.schema({
companyName: {
type: String,
maxlength: 100
}
});
const company = mongoose.model('Company', companySchema);
const res = await models.Model1
.find()
.populate({
path: 'on',
match: {
'name': keyword
}
})
.populate({
path: 'company',
match: {
'companyName': keyword
}
});
Приведенный выше поиск возвращает документы, даже если он включен, а компания возвращает нулевое значение (так как mon goose заполняет реализации по умолчанию, оставляя соединение).
Ожидаемый результат: Я хочу получить документы из model1, только если оно соответствует ключевому слову с полем имени в model2 или model3 или с полем названия компании в модели компании.
Как этого добиться? Ваша помощь очень ценится.