2016-11-07 123 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;