下面是我的用户MongoDB文档的图像。我有一个技能数组,其中包含具有以下结构的对象。
{
name: String,
points: Number,
skill: Schema.Types.ObjectId
}
这是实际用户文档的屏幕截图,您可以看到名称为html
的技能
现在我想创建一个匹配技能数组中这些对象的name
属性的搜索查询。例如,如果我的输入是htm
,它将与具有名称html
的技能的用户匹配。我尝试了下面的方式,但它似乎没有工作。有人可以建议我如何成功地做到这一点?
const createSkillsQuery = (user, input) => User.find({
$and: [
{ skills: { name: { $regex: input, $options: 'i' } } },
{ _workspace: user._workspace }
]
}).select('profile_pic full_name email created_date');
你需要在这里使用dot notation。
"skills.name": { $regex: input, $options: 'i' }