Mongoose查找查询传递变量

时间:2017-10-26 11:39:24

标签: node.js mongodb mongoose mongoose-schema

每个人都希望一切都很好。我是node.js和mongodb的新手,我在将变量传递给mongoose模型查询时遇到了麻烦。

当我传递两个参数时,其结果为空,但记录存在。

Retrieving data from MongoDB Image

通过邮递员发送请求

获取路线:/ data /:vehicle_no /:drive_id

网址http://localhost/api/data/ZXC-1123/drive_234

路线代码:

var reg_no = req.params.vehicle_no;
drive_id: req.params.drive_id;
vehicle.find({
        ID: reg_no,
        Trip_Details: {
            FileName: drive_id
        }
    }, function(err, result) {
        if(err) {
            res.json(err);
        } else if(result.length > 0) {
            res.json("Drive id Found");
        } else {
            res.json("Drive id not Found");
        }
    })

结果:未找到驱动器ID

但预期结果必须:找到驱动器ID

在上面的代码中:Trip_Details是具有file_name,_id,TripData的对象数组。

如果我只传递一个参数,如: vehicle.find({ID:reg_no} 然后找到了结果。

请帮助, 在此先感谢

1 个答案:

答案 0 :(得分:-1)

要基于两个参数进行查询,您还可以使用$并获得更好的可读性。 你出错的地方是写作查询,第二个参数应写成:

vehicle.find({
ID: reg_no,
Trip_Details.FileName: drive_id
}

使用$的实现方式如下: -

vehicle.find({
    $and: [
    {ID: reg_no},
    {Trip_Details.FileName: drive_id
    }]
}, function(err, result) {
    if(err) {
        res.json(err);
    } else if(result.length > 0) {
        res.json("Drive id Found");
    } else {
        res.json("Drive id not Found");
    }
})

有关更多信息,请参阅Mongoose Docs