Pembaruan node js mongodb oleh _id

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

"_id": { "$oid": "5a68fde3f09ad7646ddec17e" }

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 mulai

Kami 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

										
db.collection("NAME_OF_THE_COLLECTION").updateOne(QUERY ,(CALLBACK_FUNCTION) => {});
										
									
_
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

Bisakah saya memperbarui _id di MongoDB?

Anda tidak dapat memperbaruinya tetapi Anda dapat menyimpan id baru dan menghapus id lama.

Bagaimana cara memperbarui data di MongoDB menggunakan node JS?

Anda dapat memperbarui catatan, atau dokumen seperti yang disebut di MongoDB, dengan menggunakan metode updateOne() . Parameter pertama dari metode updateOne() adalah objek kueri yang menentukan dokumen mana yang akan diperbarui. Catatan. Jika kueri menemukan lebih dari satu rekaman, hanya kejadian pertama yang diperbarui.

Bagaimana cara memperbarui data di MongoDB menggunakan id?

Metode penyimpanan MongoDB (). . Jika dokumen sudah berisi kolom _id, maka metode save() setara dengan pembaruan dengan opsi upsert disetel ke true dan predikat kueri pada kolom _id

Haruskah saya menggunakan _id di MongoDB?

Field _id MongoDB sangat mendasar untuk setiap koleksi di MongoDB , dan, secara default, ia memiliki beberapa properti berguna yang dapat dimanfaatkan pengguna saat mengetahui cara _id dibuat.