【问题标题】:Moongose query with double WHERE statment带有双 WHERE 语句的 Mongoose 查询
【发布时间】:2015-10-20 00:53:44
【问题描述】:

我正面临这样一种情况,即我是 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 并且计算 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);
        });
})

我没有得到任何结果:(

【问题讨论】:

标签: mongodb mongoose mongodb-query


【解决方案1】:

你可以用这个:

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

【讨论】:

    【解决方案2】:

    在致电exec 之前,您只需要再次致电where 并附上您的附加条件:

    .where('calculation_id')
    .equals(req.params.calculation_id)
    

    【讨论】:

    • 嗨@Mike,谢谢你的回答,但它对我不起作用。更多细节在我上面的编辑中。
    • 您是否验证过 req.params 实际上具有您期望的值?另外,我建议在 res.send(records); 的调试器中设置断点;并在那时检查错误。您可能会遇到错误,并且您的代码中没有任何内容可以处理。
    • 尝试在 mongo 控制台中运行直接 db 查询。只是为了确保您的查询足够有效以获得他的结果。
    猜你喜欢
    • 2012-01-28
    • 1970-01-01
    • 2022-11-26
    • 2023-04-09
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 2016-03-11
    相关资源
    最近更新 更多