Node.js MongoDBแทรก
แทรกลงในคอลเล็กชัน
ในการแทรกบันทึกหรือเอกสารตามที่เรียกว่า MongoDB ลงในคอลเล็กชัน เราใช้
insertOne()
เมธอด
เอกสารใน MongoDB เหมือนกับบันทึกใน MySQL
พารามิเตอร์แรกของinsertOne()
เมธอดคืออ็อบเจ็กต์ที่มีชื่อและค่าของแต่ละฟิลด์ในเอกสารที่คุณต้องการแทรก
นอกจากนี้ยังใช้ฟังก์ชันเรียกกลับซึ่งคุณสามารถทำงานกับข้อผิดพลาดใดๆ หรือผลลัพธ์ของการแทรก:
ตัวอย่าง
แทรกเอกสารในคอลเลกชัน "ลูกค้า":
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
var myobj = { name: "Company
Inc", address: "Highway 37" };
dbo.collection("customers").insertOne(myobj, function(err, res) {
if (err) throw err;
console.log("1
document
inserted");
db.close();
});
});
บันทึกรหัสด้านบนในไฟล์ชื่อ "demo_mongodb_insert.js" และเรียกใช้ไฟล์:
เรียกใช้ "demo_mongodb_insert.js"
C:\Users\Your Name>node demo_mongodb_insert.js
ซึ่งจะให้ผลลัพธ์นี้แก่คุณ:
1 document inserted
หมายเหตุ:หากคุณพยายามแทรกเอกสารในคอลเลกชันที่ไม่มีอยู่ MongoDB จะสร้างคอลเลกชันโดยอัตโนมัติ
แทรกหลายเอกสาร
ในการแทรกหลายเอกสารลงในคอลเลกชันใน MongoDB เราใช้
insertMany()
วิธีการ
พารามิเตอร์แรกของinsertMany()
เมธอดคืออาร์เรย์ของออบเจ็กต์ ซึ่งมีข้อมูลที่คุณต้องการแทรก
นอกจากนี้ยังใช้ฟังก์ชันเรียกกลับซึ่งคุณสามารถทำงานกับข้อผิดพลาดใดๆ หรือผลลัพธ์ของการแทรก:
ตัวอย่าง
แทรกเอกสารหลายชุดในคอลเล็กชัน "ลูกค้า":
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
var myobj = [
{ name: 'John', address: 'Highway 71'},
{ name: 'Peter', address: 'Lowstreet 4'},
{ name: 'Amy',
address: 'Apple st 652'},
{ name: 'Hannah', address:
'Mountain 21'},
{ name: 'Michael', address: 'Valley
345'},
{ name: 'Sandy', address: 'Ocean blvd 2'},
{ name: 'Betty', address: 'Green Grass 1'},
{ name:
'Richard', address: 'Sky st 331'},
{ name: 'Susan',
address: 'One way 98'},
{ name: 'Vicky', address:
'Yellow Garden 2'},
{ name: 'Ben', address: 'Park Lane
38'},
{ name: 'William', address: 'Central st 954'},
{ name: 'Chuck', address: 'Main Road 989'},
{ name:
'Viola', address: 'Sideway 1633'}
];
dbo.collection("customers").insertMany(myobj,
function(err, res) {
if (err) throw err;
console.log("Number of documents inserted: " + res.insertedCount);
db.close();
});
});
บันทึกรหัสด้านบนในไฟล์ชื่อ "demo_mongodb_insert_multiple.js" และเรียกใช้ไฟล์:
เรียกใช้ "demo_mongodb_insert_multiple.js"
C:\Users\Your Name>node demo_mongodb_insert_multiple.js
ซึ่งจะให้ผลลัพธ์นี้แก่คุณ:
Number of documents inserted: 14
วัตถุผลลัพธ์
เมื่อดำเนินการinsertMany()
เมธอด วัตถุผลลัพธ์จะถูกส่งกลับ
ออบเจ็กต์ผลลัพธ์ประกอบด้วยข้อมูลเกี่ยวกับวิธีการแทรกที่ส่งผลต่อฐานข้อมูล
วัตถุที่ส่งคืนจากตัวอย่างด้านบนมีลักษณะดังนี้:
{
result: { ok: 1, n: 14 },
ops: [
{
name: 'John', address: 'Highway 71', _id: 58fdbf5c0ef8a50b4cdd9a84 },
{ name: 'Peter', address: 'Lowstreet 4', _id: 58fdbf5c0ef8a50b4cdd9a85 },
{ name: 'Amy', address: 'Apple st 652', _id: 58fdbf5c0ef8a50b4cdd9a86 },
{ name: 'Hannah', address: 'Mountain 21', _id: 58fdbf5c0ef8a50b4cdd9a87 },
{ name: 'Michael', address: 'Valley 345', _id: 58fdbf5c0ef8a50b4cdd9a88 },
{ name: 'Sandy', address: 'Ocean blvd 2', _id: 58fdbf5c0ef8a50b4cdd9a89 },
{ name: 'Betty', address: 'Green Grass 1', _id: 58fdbf5c0ef8a50b4cdd9a8a },
{ name: 'Richard', address: 'Sky st 331', _id: 58fdbf5c0ef8a50b4cdd9a8b },
{ name: 'Susan', address: 'One way 98', _id: 58fdbf5c0ef8a50b4cdd9a8c },
{ name: 'Vicky', address: 'Yellow Garden 2', _id: 58fdbf5c0ef8a50b4cdd9a8d },
{ name: 'Ben', address: 'Park Lane 38', _id: 58fdbf5c0ef8a50b4cdd9a8e },
{ name: 'William', address: 'Central st 954', _id: 58fdbf5c0ef8a50b4cdd9a8f },
{ name: 'Chuck', address: 'Main Road 989', _id: 58fdbf5c0ef8a50b4cdd9a90 },
{ name: 'Viola', address: 'Sideway 1633', _id: 58fdbf5c0ef8a50b4cdd9a91 } ],
insertedCount: 14,
insertedIds: [
58fdbf5c0ef8a50b4cdd9a84,
58fdbf5c0ef8a50b4cdd9a85,
58fdbf5c0ef8a50b4cdd9a86,
58fdbf5c0ef8a50b4cdd9a87,
58fdbf5c0ef8a50b4cdd9a88,
58fdbf5c0ef8a50b4cdd9a89,
58fdbf5c0ef8a50b4cdd9a8a,
58fdbf5c0ef8a50b4cdd9a8b,
58fdbf5c0ef8a50b4cdd9a8c,
58fdbf5c0ef8a50b4cdd9a8d,
58fdbf5c0ef8a50b4cdd9a8e,
58fdbf5c0ef8a50b4cdd9a8f
58fdbf5c0ef8a50b4cdd9a90,
58fdbf5c0ef8a50b4cdd9a91 ]
}
ค่าของคุณสมบัติสามารถแสดงได้ดังนี้:
ตัวอย่าง
ส่งคืนจำนวนเอกสารที่แทรก:
console.log(res.insertedCount)
ซึ่งจะให้ผลลัพธ์นี้:
14
_id ฟิลด์
หากคุณไม่ระบุ_id
ฟิลด์ MongoDB จะเพิ่มหนึ่งฟิลด์ให้คุณและกำหนดรหัสเฉพาะสำหรับแต่ละเอกสาร
ในตัวอย่างด้านบนไม่_id
ได้ระบุฟิลด์ และอย่างที่คุณเห็นจากออบเจ็กต์ผลลัพธ์ MongoDB กำหนด _id ที่ไม่ซ้ำกันสำหรับแต่ละเอกสาร
หากคุณระบุฟิลด์_id
ค่าจะต้องไม่ซ้ำกันสำหรับแต่ละเอกสาร:
ตัวอย่าง
แทรกสามระเบียนในตาราง "ผลิตภัณฑ์" โดยมี
_id
ฟิลด์ที่ระบุ:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
var myobj = [
{ _id: 154, name:
'Chocolate Heaven'},
{ _id: 155, name:
'Tasty Lemon'},
{ _id: 156, name:
'Vanilla Dream'}
];
dbo.collection("products").insertMany(myobj,
function(err, res) {
if (err) throw err;
console.log(res);
db.close();
});
});
บันทึกรหัสด้านบนในไฟล์ชื่อ "demo_mongodb_insert_id.js" และเรียกใช้ไฟล์:
เรียกใช้ "demo_mongodb_insert_id.js"
C:\Users\Your Name>node demo_mongodb_insert_id.js
ซึ่งจะให้ผลลัพธ์นี้แก่คุณ:
{
result: { ok: 1, n: 3 },
ops: [
{
_id: 154, name: 'Chocolate Heaven },
{
_id: 155, name: 'Tasty Lemon },
{
_id: 156, name: 'Vanilla Dream } ],
insertedCount: 3,
insertedIds: [
154,
155,
156 ]
}