Ekspresikan MongoDB find() berdasarkan bidang _id

Jadi di aplikasi ekspres saya, saya mencoba find() berdasarkan bidang _id saya.

Lihat data MongoDB saya di bawah.

{
        "_id": {
            "$oid": "58c2a5bdf36d281631b3714a"
        },
        "title": "EntertheBadJah",
        "subTitle": "Lorem ipsum dolor",
        "thmbNailImg": "",
        "headerImg": "",
         ... BLAH BLAH BLAH

Saat saya menggunakan .find( _id: id ), parameter id saya = 58c2a5bdf36d281631b3714a.

Bagaimana cara saya mengonversi/menggunakan ini untuk mendapatkan data MongoDB saya?

Ini panggilan Ekspres saya:

//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);
        });

});

Bantuan atau saran apa pun dihargai. Terima kasih sebelumnya.

EDIT: (kueri saya yang telah direvisi)

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

    var id = req.query.id

    db.collection('articles').findOne({
        "_id.$oid": id
    }, function(err, article) {
        res.send(article);
        console.log(article)
    });

});

artikel Saat ini mengembalikan NULL.


person djmcr    schedule 14.03.2017    source sumber
comment
coba ini, db.collection('articles').find( {"_id.$oid": id }) docs.mongodb.com/v3.2/core /document/#dokumen-tertanam   -  person ajai Jothi    schedule 14.03.2017
comment
Baru saja mencoba, ia mengembalikan MongoError: pemilih kueri harus berupa objek @ajaiJothi   -  person djmcr    schedule 14.03.2017
comment
memperbarui jawaban saya. Silakan periksa sekarang   -  person ajai Jothi    schedule 14.03.2017
comment
@danjonescidtrix Saat Anda mengatakan 58c2a5bdf36d281631b3714a sebagai bilangan bulat, apakah benar - bilangan bulat? Apakah itu seharusnya sebuah string?   -  person Vince Bowdren    schedule 14.03.2017
comment
itu bilangan bulat, haruskah itu berupa string dalam permintaan saya? @VinceBowdren   -  person djmcr    schedule 14.03.2017
comment
Bilangan bulat apa itu? 58c2a5bdf36d281631b3714a tampaknya berupa string.   -  person Vince Bowdren    schedule 14.03.2017
comment
ahh nanti jadi string.. lihat editan saya pada pertanyaan @VinceBowdren   -  person djmcr    schedule 14.03.2017
comment
ada ide kawan? :) @VinceBowdren   -  person djmcr    schedule 14.03.2017
comment
Anda perlu memasukkan string 58c2a5bdf36d281631b3714a ke ObjectId. Saya tidak tahu lingkungan ekspresnya sama sekali, tapi mungkin sesederhana ObjectId(req.query.id).   -  person Vince Bowdren    schedule 14.03.2017
comment
apa url permintaannya?   -  person NERDYLIZARD    schedule 14.03.2017
comment
axios.get('/api/article', { params: { id: id } }) ...tapi menurut saya masalah saya tidak terletak pada permintaan @NERDYLIZARD   -  person djmcr    schedule 14.03.2017
comment
coba /api/article?id="yourid" untuk pertanyaan.   -  person NERDYLIZARD    schedule 14.03.2017
comment
Saya rasa masalah saya bukan pada query, ketika saya login 'req.query.id' ia mengembalikan 58c2a5bdf36d281631b3714a, saya hanya tidak tahu bagaimana cara mengembalikan record saya untuk _id itu @NERDYLIZARD   -  person djmcr    schedule 14.03.2017
comment
@danjonescidtrix Saya menggali lebih dalam dari sumber lain. Lihat editnya, semoga membantu.   -  person NERDYLIZARD    schedule 14.03.2017


Jawaban (1)


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

atau bahkan lebih spesifik:

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

EDIT:
Mengonversi string menjadi tipe ObjectId sebelum membuat kueri

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

Referensi: Jika saya memiliki id dokumen mongo sebagai string, bagaimana cara menanyakannya sebagai _id?

person NERDYLIZARD    schedule 14.03.2017