Resource
我有一个用,Skill
和设置的模式ResourceSkillLevel
。前两个本质上只是名称,而后者则有资源、技能和等级的参考。我想同时选择所有Resource
符合特定技能水平的s。
架构
// Omitting fields that don't matter for the purpose of the question
ResourceSchema = new Schema({name: String});
SkillSchema = new Schema({name: String});
ResourceSkillLevelSchema = new Schema({
"resource": {type: Schema.ObjectId, ref: "Resource"},
"skill": {type: Schema.ObjectId, ref: "Skill"},
"level": {type: Number, min: 1, max: 5}
});
问题
目前我有:
ResourceSkillLevel.find({$and: [
{skill: "node.js", level: {$gte: 3}},
{skill: "mongodb", level: {$gte: 3}},
]})
这将返回ResourceSkillLevel
条目,但有两个问题:
- 这个条件是不可能的,因为一个
ResourceSkillLevel
条目不能同时满足两个条件 - 我想获得
Resource
满足所有这些条件的条目。如果我有ResourceSkillLevel
条目,我可以Resource
从他们那里得到,但我相信有一个更简单的方法。
要求
如果您不明白,我需要的是一种同时获取Resource
与所需ResourceSkillLevel
条目匹配的所有条目的方法。也就是说,根据上面的查询,我应该能够得到一个Resource
在 node.js和mongodb 中有 4 个的资源,但不能得到一个在 node.js 中只有 2 个或没有任何技能水平的资源一点也不。