mongodb 搜索查询 - returns 所有结果(也有非匹配结果)

mongodb search query - returns all results (non matching ones too)

这是来自 MEAN stack 网站的示例, 我需要查询 return 与输入“完全”匹配的参数。 请查看所附图片以更好地了解问题。

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 } ]`

键'hp'、'length'等在cable schema的body对象中。所以要引用 'hp' 在查询

中使用 'body.hp'

将您的查询更改为

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

混淆与分配有关 - 1body 来自 req body,另一个来自“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;