我有一个Mongodb数据库,它的恢复对象如下所示。我使用的是节点快递服务器。我正在查询mongo数据库,以获得基于特定技能的对象。例如:如果我查询技能: jquery,则只返回具有此技能的对象。问题在于从数据库返回对象的get函数。
在突出显示的代码中:如果我直接插入对象如下:
Resume.find({skills.jQuery : 2},function(err, results){...}然后我得到了预期的结果。
但是,如果我动态地插入它(skillSet),那么它就不能工作。Iit检查了skillSet的值,它给了我我所期望的(‘skills.JQuery’)
var skillSet = ("'"+'skills.' + req.params.skill +"'");
console.log('skillSet',skillSet) //'skills.jQuery'
Resume.find({skillSet : 2},function(err, results){下面是代码片段:
{
"_id" : ObjectId("56031b4353b32084651173fb"),
"uuid" : "acd06792-87c3-4b0e-827a-8bd19d7f9c03",
"creationDate" : ISODate("2015-09-23T21:36:03.728Z"),
"status" : "3",
"name" : "resume_dev",
"__v" : 0,
"skills" : {
"node" : 2,
"react" : 2,
"React" : 3,
"JQUERY" : 2,
"JavaScript" : 15,
"JQuery" : 5,
"Backbone" : 3,
"Node" : 2,
"Angular" : 4,
"Javascript" : 2,
"jQuery" : 17,
"javascript" : 3
}
}
router.get('/skills/:skill', function(req, res){
console.log("req.params.skill",req.params.skill);
var skillSet = ("'"+'skills.' + req.params.skill +"'");
console.log('skillSet',skillSet) //skills.react
Resume.find({skillSet : 2},function(err, results){
console.log('hi');
console.log(skillSet)
console.log(results);
if (err) {
res.status(500).json(err);
}
else {
// console.log("====>",results);
res.status(200).json(results);
// res.render('status',{Resume: JSON.stringify(results)});
}
});
});发布于 2015-09-25 07:12:49
当我正确理解你的问题时,你可以这样做:
var query = {};
query['skills.' + req.params.skill] = 2;
Resume.find(query,function(err, results){
// Do something with the callback
};编辑
如果您想获得大于或等于1的所有数字,则需要$gte。这是文档。这是更新的查询:
var query = {};
query['skills.' + req.params.skill] = {$gte: 1};
Resume.find(query,function(err, results){
// Do something with the callback
};https://stackoverflow.com/questions/32774426
复制相似问题