Express MongoDB find()基于_id字段

时间:2017-03-14 15:46:52

标签: javascript node.js mongodb express mongodb-query

所以在我的快递应用中,我试图根据我的_id字段找到()。

请参阅下面的MongoDB记录。

ORDER BY

当我使用{ "_id": { "$oid": "58c2a5bdf36d281631b3714a" }, "title": "EntertheBadJah", "subTitle": "Lorem ipsum dolor", "thmbNailImg": "", "headerImg": "", ... BLAH BLAH BLAH 时, 我的.find( _id: id ) param = id

我如何转换/使用它来获取我的MongoDB记录?

以下是我的快速通话:

58c2a5bdf36d281631b3714a

感谢任何帮助或建议。提前谢谢。

编辑:(我的修订后的查询)

//GET ARTICLE
app.get('/api/article', (req, res) => {

    var id = req.query.id
    var article = [];

    db.collection('articles')
        .find( _id: id )
        .then(result => {
            article = articles.concat(result);
        }).then(() => {
            res.send(article);
        }).catch(e => {
            console.error(e);
        });

});
  

文章目前正在返回NULL。

1 个答案:

答案 0 :(得分:5)

db.collection('articles')
    .find( {"_id.$oid": id} )
    .

甚至更具体:

db.collection('articles')
    .findOne( {"_id.$oid": id} )
    .

修改
在查询之前将字符串转换为ObjectId类型

var ObjectID = require('mongodb').ObjectID;   
db.collection('articles')
    .findOne( {"_id.$oid": new ObjectID(id)})
    .

参考:If i have a mongo document id as a string how do I query for it as an _id?