我无法通过_id找到mongodb

时间:2017-11-30 22:19:07

标签: node.js mongodb

我试图使用Node.js和MongoDB通过_id查找()。

我可以在使用替代参数时显示数据库中的对象,或者根本不使用任何参数。这是我的代码和结果,以表明:

mongo.connect(url, function(err, db){
    if (err) throw err;
    db.collection('listings').find().toArray(function(err, result){
        if (err) throw err;
        console.log(result);
        db.close();
    });
});

我得到的结果是:

  

[{" _id":" 5a1ff1ac32fe0a2bd966be1e""标题":"喜""价格&#34 ;: #&34; 5"},{" _id":" 5a207cea2f119cbd6a5fa688""标题":"你好"&#34 ;价格":" 10"}]

当我修改代码以使用标题" hi"来查找结果时我回来了:

  

[{" _id":" 5a1ff1ac32fe0a2bd966be1e""标题":"喜""价格&#34 ;: " 5"}]

使用以下代码:

mongo.connect(url, function(err, db){
    if (err) throw err;
    db.collection('listings').find({'title': 'hi'}).toArray(function(err, result){
        if (err) throw err;
        console.log(result);
        db.close();
    });
});

然而当我尝试使用此代码按_id排序时:

mongo.connect(url, function(err, db){
    if (err) throw err;
    db.collection('listings').find({'_id': '5a1ff1ac32fe0a2bd966be1e'}).toArray(function(err, result){
        if (err) throw err;
        res.send(result);
        db.close();
    });
});

我得到的结果是

  

[]

问题是:如何通过_id查找,以便在使用_id时可以获取特定_id的结果?

1 个答案:

答案 0 :(得分:0)

'5a1ff1ac32fe0a2bd966be1e'是一个字符串。

_id的类型为ObjectId

您可以使用ObjectID('5a1ff1ac32fe0a2bd966be1e')制作对象ID。你可以要求这样的功能:

const ObjectID = require('mongodb').ObjectID;

Here是文档。