具有双WHERE语句的Moongose查询

时间:2015-09-04 13:35:20

标签: mongodb mongoose mongodb-query

我站在Moongose和MongoDB的新情况之前,我需要在MySQL中编写一些看起来像这样的东西:

SELECT * FROM table_name WHERE case_id = $case_id AND calculation_id = $calculation_id;

这就是我现在在Node.js中发表声明的方式:

app.get('/positions/:case_id/:calculation_id', function (req, res) {
    Positions.find()
        .where('case_id')
        .equals(req.params.case_id)
        .exec(function (err, records) {
            res.send(records);
        });
})

添加一个新的.where真的没有处理,所以我该怎么办?

示例行:

{"_id":"55e993ad29149e61931b826c","calculation_id":22,"case_id":"2","position_id":"33660","blockline":"B510L1 ","repairmethod":"20 ","guidenumber":"N/A ","amount":"6","hours":"0","starmutation":"N","text":"BLATNÍK P L V-Z","originalpartnumber":"","originalpartprice":"0","manufacturercode":"","quality":"","suppliercode":"","id":4},

所以在这一行中,case_id = 2和calculation_id 22。

如果我打开网址positions/2/22

app.get('/positions/:case_id/:calculation_id', function (req, res) {
    Positions.find()
        .where('case_id').equals(req.params.case_id)
        .where('calculation_id').equals(req.params.calculation_id)
        .exec(function (err, records) {
            res.send(records);
        });
})

我没有结果:(

2 个答案:

答案 0 :(得分:4)

您可以使用:

app.get('/positions/:case_id/:calculation_id', function (req, res) {
Positions.find({case_id: req.params.case_id, calculation_id: req.params.calculation_id})
    .exec(function (err, records) {
        res.send(records);
    });
})

您应该阅读Mongoose documentation

答案 1 :(得分:3)

在致电where之前,您只需再次使用其他条件致电exec

.where('calculation_id')
.equals(req.params.calculation_id)
相关问题