我有一个mongo架构如下。
var employeeSchema = new mongoose.Schema({
id: { type: String,ref:'Users' },
FirstName: { type: String },
LastName: { type: String },
Skills: [
{
Category: { type: String },
Level: { type: String }
}
]}, { strict: true });
输入数据后,它看起来像这样。
{
id: '123456',
FirstName: "Name",
LastName: "Last Name",
Skills: [
{
Category: "Traffic Management Supervisor ",
Level: "Intermediate"
}
]
}
我的问题我想根据他的技能类别过滤雇主。我希望按照每个单词的第一个字母过滤员工,而不是输入整个字符串
Ex:我需要使用 TMS 而非流量管理主管
按技能类别过滤所有员工答案 0 :(得分:2)
您可以在聚合方法中使用正则表达式匹配。我建议您应该动态创建这些搜索。无论输入是什么,并将它们推入$或正则表达式...
// Only filter by category field
Employee.aggregate([{
$match: {
"Skills.Category": {
$regex: '[tms]+',
$options: 'i'
}
}
}])
// Any category match
Employee.aggregate([{
$match: {
$or: [{
"Skills.Category": {
$regex: '[tms]+',
$options: 'i'
}
}, {
"Skills.Level": {
$regex: '[tms]+',
$options: 'i'
}
}]
}
}])