Kesalahannya adalah karena kami mengimpor file JSON yang memiliki "_id" sebagai String dan bukan ObjectId, Anda dapat melakukan langkah-langkah ini (saya telah menemukan ini di StackOverflow dan menyalin semuanya, maaf saya tidak memiliki tautannya rn )
Di tempat pertama
Periksa database MongoDB Anda, jika _id disimpan sebagai String, findById(id) tidak dapat ditemukan karena mengidentifikasi ObjectId. Jika Anda telah menggunakan basis data impor dengan menggunakan perintah mongoimport dan menyertakan _id di JSON
Solusi 1
ubah JSON Anda dan untuk setiap dokumen, ubah _id misalnya
_Indo. "5a68fde3f09ad7646ddec17e" ke yang berikut dan jalankan mongoimport lagi
Solusi 2
hapus _id di file JSON, jatuhkan koleksi, dan impor lagi. Mongo akan membuat _id secara otomatis
Setelah salah satu solusi di atas, findById(“id”) akan berfungsi
Kedua
Khususnya dalam kasus di mana elemen _id Anda adalah string, mungkin ide yang lebih baik untuk menggunakan paket MongoDB. npm saya MongoDB
var MongoClient = membutuhkan('mongodb'). Klien Mongo;
var url = “mongodb. // localhost. 27017/”;
Klien Mongo. hubungkan(url, fungsi (err, db) {
jika (err) lempar err;
var dbo = db. db(“nama_db_Anda”);
dbo. koleksi(“koleksi_buah”)
temukan({_id. ‘5a1cf77920701c1f0aafb85e’})
//. temukan({_id. '5a1cf77920701c1f0aafb85e'}, {proyeksi. { _Indo. 0, nama. 1, warna. 1} }) // untuk memilih kolom tertentu yang diinginkan
toArray(fungsi (err, hasil) {
jika (err) lempar err;
menghibur. log(hasil);
db. menutup();
});
});
Kode sederhana di atas, diasumsikan Anda mengatur penanganan kesalahan sendiri, baik melalui try-catch, atau mengirim 404 sebagai kode status, atau mengarahkan ulang ke templat halaman kesalahan, tergantung pada apakah kode tersebut disematkan di penangan rute Express atau tidak
Pada bagian operasi mongodb ini menggunakan node. Pada seri tutorial js, kita akan belajar tentang memperbarui kemunculan pertama data yang cocok dengan kriteria tertentu dari var new_db = "mongodb://localhost:27017/demo_db" 0 menggunakan var new_db = "mongodb://localhost:27017/demo_db" 1
Ayo mulaiKami akan mulai dengan menyertakan paket var new_db = "mongodb://localhost:27017/demo_db" _2 npm seperti yang ditunjukkan di bawah ini
var mongo = require('mongodb'); _Buat koneksi antara database mongoDb dan node kami. js menggunakan yang berikut ini
var new_db = "mongodb://localhost:27017/demo_db" _- demo_db adalah nama databasenya. Anda dapat mengubahnya sesuai dengan nama database Anda
- 27017 adalah port tempat mongoDb berjalan
- Localhost i. e. 127. 0. 0. 1 adalah IP lokal
var new_db = "mongodb://localhost:27017/demo_db"
3 adalah metode bawaan dari
var new_db = "mongodb://localhost:27017/demo_db"
2 yang digunakan untuk memperbarui kejadian pertama dari data yang diperoleh menggunakan kueri penelusuran
Sintaks fungsi
var new_db = "mongodb://localhost:27017/demo_db"
_3 diberikan di bawah ini
Contoh diberikan di bawah ini. //update-one.js var mongo = require('mongodb'); var new_db = "mongodb://localhost:27017/demo_db" //Establishing a connection with the database mongo.connect(new_db ,(error , db) => { if (error){ throw error; } //Query parameter is used to search the collection. var query = { name : "rishabhio" }; //And When the query matches the data in the DB , "data" parameter is used to update the value. var data = { name : "nodejsera.com" , mobile : "1234567890" } //Accessing the collection using nodejs db.collection("details").updateOne(query , data, (err , collection) => { if(err) throw err; console.log("Record updated successfully"); console.log(collection); }); });
Anda dapat menjalankan kode di atas menggunakan perintah berikut. >node update-one.js Record updated successfully { result: { ok: 1, n: 1, nModified: 1 }, connection: null, message: undefined, modifiedCount: 1, upsertedId: null, upsertedCount: 0, matchedCount: 1 }
Sekarang mari kita lihat kumpulan rincian dalam database Menggunakan operasi Read All kejadian seperti yang ditunjukkan di bawah ini. >node read-all.js Record Read successfully [ { name: 'Nodejsera', age: '23', mobile: '9876543210', _id: 59706a56a4f6761e3cc22c98 }, { _id: 59706c3771da112bd8b922dc, name: 'nodejsera.com', mobile: '1234567890' }, ]
Kita dapat mengamati bahwa pada output di atas parameter var new_db = "mongodb://localhost:27017/demo_db" _6 tidak ada di entri kedua karena metode ini akan memperbarui seluruh entri dan kami tidak memberikan parameter var new_db = "mongodb://localhost:27017/demo_db" 6 di var new_db = "mongodb://localhost:27017/demo_db" 8 kami di atas, akibatnya dihapus. Kita dapat menggunakan operator var new_db = "mongodb://localhost:27017/demo_db" _9 untuk menghindari kolom lain dibiarkan kosong dan untuk memperbarui kolom tertentu
db.collection("NAME_OF_THE_COLLECTION").updateOne(QUERY ,(CALLBACK_FUNCTION) => {}); _0 operator digunakan untuk memperbarui bidang tertentu dari dokumen dalam koleksi mongodb. mari kita cetak isi database Sintaks fungsi var new_db = "mongodb://localhost:27017/demo_db" 3 diberikan di bawah ini