2016-11-07 112 views
1

这是来自MEAN堆栈网站的样本, 我要求查询返回与输入完全匹配的参数。 请查看附件图片以更好地了解问题。mongodb搜索查询 - 返回所有结果(不匹配的结果)

Search Query Function

在这个问题上的任何暗示? (我是初学者所以请详细一点) -TIA :)


Input for the search from the browser 

    { body: { hp: 1, length: 1, diameter: 1, voltage: 1 } } 

// mongo schema 

    var CableSchema = new schema({ 
     body : { 
      "hp": { 
       type: Number 
      }, 
      "length": { 
       type: Number 
      }, 
      "diameter": {      
       type: Number 
      }, 
      "voltage": {       
       type: Number 
      }, 
      "cost": { 
       type: Number 
      }, 

      "type": { 
       type: String, 
       default: "Cable" 
      } 
     } 
    }); 

----------------------------------------------------------- 
    // Result from Search Query obtained in console 

    [ { body: 
     { type: 'Cable', 
      cost: 1, 
      voltage: 1, 
      diameter: 1, 
      length: 1, 
      hp: 1 }, 
     __v: 0, 
     _id: 5820246086d42a3c269ad9f2 }, 
     { body: 
     { type: 'Cable', 
      cost: 2, 
      voltage: 2, 
      diameter: 2, 
      length: 2, 
      hp: 2 }, 
     __v: 0, 
     _id: 5820249086d42a3c269ad9f3 } ]` 

回答

0

键 '马力', '长' 等是电缆的身体里面对象架构。因此,在查询参考“HP”使用“body.hp”

查询更改为

var query = Cable.find({'body.hp' : parseInt(reqHp) , 'body.length' : parseInt(reqLen), 
     'body.diameter' : parseInt(reqDia) ,'body.voltage' : parseInt(reqVol)}) 
+0

泰,我上述变化作出。不幸的是,它现在返回:“未找到结果” – user300057

+0

使用ParseInt将值转换为整数 – azhar

+0

它们被定义为模式中的整数,应用parseInt()方法。查询仍然失败,我也尝试使用$ gte方法,它也不起作用。 – user300057

0

的混乱与分配 - 1body来自REQ体,另一种是从“2body”的架构 我需要使用1body.2body来获取数据。

var reqHP = req.body.body.hp; 
 
    var reqLen = req.body.body.length; 
 
    var reqDia = req.body.body.diameter; 
 
    var reqVol = req.body.body.voltage; 
 
    var reqCost = req.body.body.cost;