.find()中的投影不适用于MongoDB / Express

时间:2018-06-07 04:54:14

标签: node.js mongodb express

我有一个快速应用程序,它应该查询我的MongoDB数据库,然后只返回结果的某些字段。我目前的代码如下:

app.get('/stored', (req, res) => {
    let pollId = req.query.id;
    let pollCursor = db.collection(collName).find({"_id": ObjectId(pollId)}, {"_id": false, "pollName": false}).toArray((err, data) => {
        if(err) return err;

        let dataObj = data[0];
        console.log(dataObj);       
    });
});

我希望收到一个包含除“_id”和“pollName”字段之外的所有字段的数据对象。但是,我得到的对象仍包含这些字段以及所有其他字段。我究竟做错了什么?

1 个答案:

答案 0 :(得分:0)

首先你需要像这样测试:

    app.get('/stored', (req, res) => {
        let pollId = req.query.id;
         res.send(pollId)
         return;
    });

如果pollId与来自客户端发送的pollId匹配,那很好。您应该创建一个查询,如下所示:

let query = {_id: pollId}

这是我的代码,希望对你有帮助

 // https://tudiendanhngon.herokuapp.com/author/detail?id=5adc963c7b76157c65d3b1d9
    app.get("/author/detail", function (req, res) {
        var id = req.query.id;
        var query = {_id: id};
       db.collection(COLLECTION_AUTHORS).find(query).exec(function (err, author) {
            if (err) {
                res.send("Error")
            } else {
                res.json(author);
            }
        });
    });