Chèn Node.js MongoDB
Chèn vào bộ sưu tập
Để chèn một bản ghi hoặc tài liệu như được gọi trong MongoDB vào một bộ sưu tập, chúng ta sử dụng phương thức insertOne()
.
Một tài liệu trong MongoDB giống như một bản ghi trong MySQL
Tham số đầu tiên của phương thức insertOne()
là một đối tượng chứa (các) tên và (các) giá trị của từng trường trong tài liệu bạn muốn chèn.
Nó cũng có chức năng gọi lại để bạn có thể xử lý bất kỳ lỗi nào hoặc kết quả của việc chèn:
Ví dụ
Chèn một tài liệu vào bộ sưu tập "khách hàng":
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();
});
});
Chạy ví dụ »Lưu mã ở trên vào tệp có tên "demo_mongodb_insert.js" và chạy tệp:
Chạy "demo_mongodb_insert.js"
C:\Users\ Your Name >node demo_mongodb_insert.js
Điều này sẽ cho bạn kết quả này:
1 document inserted
Lưu ý: Nếu bạn cố chèn tài liệu vào bộ sưu tập không tồn tại, MongoDB sẽ tự động tạo bộ sưu tập.
Chèn nhiều tài liệu
Để chèn nhiều tài liệu vào một bộ sưu tập trong MongoDB, chúng ta sử dụng phương thức insertMany()
.
Tham số đầu tiên của phương thức insertMany()
là một mảng các đối tượng, chứa dữ liệu bạn muốn chèn.
Nó cũng có chức năng gọi lại để bạn có thể xử lý bất kỳ lỗi nào hoặc kết quả của việc chèn:
Ví dụ
Chèn nhiều tài liệu vào bộ sưu tập "khách hàng":
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();
});
});
Chạy ví dụ »Lưu mã ở trên vào một tệp có tên "demo_mongodb_insert_multiple.js" và chạy tệp:
Chạy "demo_mongodb_insert_multiple.js"
C:\Users\ Your Name >node demo_mongodb_insert_multiple.js
Điều này sẽ cho bạn kết quả này:
Number of documents inserted: 14
Đối tượng kết quả
Khi thực thi phương thức insertMany()
, một đối tượng kết quả sẽ được trả về.
Đối tượng kết quả chứa thông tin về cách việc chèn ảnh hưởng đến cơ sở dữ liệu.
Đối tượng được trả về từ ví dụ trên trông như thế này:
{
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 ]
}
Giá trị của thuộc tính có thể được hiển thị như sau:
Ví dụ
Trả về số lượng tài liệu đã chèn:
console.log(res.insertedCount)
nào sẽ tạo ra kết quả này:
14
Trường _id
Nếu bạn không chỉ định trường _id
thì MongoDB sẽ thêm một trường cho bạn và gán một id duy nhất cho mỗi tài liệu.
Trong ví dụ trên không có trường _id
nào được chỉ định và như bạn có thể thấy từ đối tượng kết quả, MongoDB đã gán một _id duy nhất cho mỗi tài liệu.
Nếu bạn chỉ định trường _id
thì giá trị phải là duy nhất cho mỗi tài liệu:
Ví dụ
Chèn ba bản ghi vào bảng "sản phẩm", với các trường _id
được chỉ định:
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();
});
});
Chạy ví dụ »Lưu mã ở trên vào một tệp có tên "demo_mongodb_insert_id.js" và chạy tệp:
Chạy "demo_mongodb_insert_id.js"
C:\Users\ Your Name >node demo_mongodb_insert_id.js
Điều này sẽ cho bạn kết quả này:
{
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 ]
}