【问题标题】:Mongodb document with array of objects property: how match property of this array?具有对象数组属性的MongoDB文档:如何匹配该数组的属性?
【发布时间】:2019-03-10 06:20:31
【问题描述】:

下面是我的用户 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');

【问题讨论】:

  • 这里不需要$and。这是隐含的。
  • 试试"skills.name": { $regex...
  • 好的,塞尔吉奥,我试试
  • 成功了!非常感谢!
  • 作为答案发布,这样我可以赚取一些互联网积分:)

标签: javascript node.js mongodb mongoose


【解决方案1】:

您需要在此处使用dot notation

"skills.name": { $regex: input, $options: 'i' }

【讨论】:

    猜你喜欢
    • 2015-01-20
    • 2017-06-11
    • 2023-03-20
    • 2020-06-20
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    相关资源
    最近更新 更多