我是Mongoose的新手,我已经尝试了几天如何解决这个问题,我仍然遇到麻烦。
我的文档对象如下。
"person" : [
{
"title" : "front-end developer",
"skills" : [
{
"name" : "js",
"project" : "1",
},
{
"name" : "CSS",
"project" : "5",
}
]
},
{
"title" : "software engineer",
"skills" : [
{
"name" : "Java",
"project" : "1",
},
{
"name" : "c++",
"project" : "5",
}
]
}
]
我想要完成的是返回所有person.title
= software engineer
AND person.skills.name
= c++
的文档。技能c++
必须属于到software engineer
人物对象。因此,当前端开发人员c++
时返回文档并不理想。
这是我到目前为止所做的尝试。查询有效,但它返回满足其中一个条件而不是两者的文档。
var query = {
_id: { $nin: [userID] },
$and: [
{person: {
$elemMatch: {
name: {$regex: `^${titleName}$`, $options: "i"}
}
}},
{[`person.skills`]: {
$elemMatch: {
name: {$regex: `^${skillName}$`, $options: "i"}
}
}}
]
};
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
您可以尝试以下查询。在$elemMatch
var query = {
"_id": {
"$nin": [userID]
},
"person": {
"$elemMatch": {
"name":{$regex: `^${titleName}$`, $options: "i"},
"skills.name": {$regex: `^${skillName}$`, $options: "i"}
}
}
};