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ư nó được gọi trong MongoDB, vào một bộ sưu tập, chúng tôi sử dụng insertOne()phương pháp này.

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 insertOne()phương thức là một đối tượng chứa (các) tên và (các) giá trị của mỗi trường trong tài liệu bạn muốn chèn.

Nó cũng có một hàm gọi lại nơi bạn có thể làm việc với bất kỳ lỗi nào hoặc kết quả của việc chèn:

Thí dụ

Chèn 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();
  });
});

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ẽ cung cấp cho bạn kết quả này:

1 document inserted

Lưu ý: Nếu bạn cố gắng chèn tài liệu vào một 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 tôi sử dụng insertMany()phương pháp này.

Tham số đầu tiên của insertMany()phương thức là một mảng đối tượng, chứa dữ liệu bạn muốn chèn.

Nó cũng có một hàm gọi lại nơi bạn có thể làm việc với bất kỳ lỗi nào hoặc kết quả của việc chèn:

Thí dụ

Chèn nhiều tài liệu trong 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();
  });
});

Lưu mã ở trên vào 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ẽ cung cấp cho bạn kết quả này:

Number of documents inserted: 14

Đối tượng kết quả

Khi thực thi insertMany()phương thức, một đối tượng kết quả được trả về.

Đối tượng kết quả chứa thông tin về cách thứ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 giống như sau:

{
  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 các thuộc tính có thể được hiển thị như sau:

Thí dụ

Trả lại số lượng tài liệu đã chèn:

console.log(res.insertedCount)

Điều nào sẽ tạo ra kết quả này:

14

Trường _id

Nếu bạn không chỉ định một _idtrường, thì MongoDB sẽ thêm một trường cho bạn và chỉ định một id duy nhất cho mỗi tài liệu.

Trong ví dụ trên, không có _idtrường nào được chỉ định và như bạn có thể thấy từ đối tượng kết quả, MongoDB đã chỉ định một _id duy nhất cho mỗi tài liệu.

Nếu bạn chỉ định _idtrường, giá trị phải là duy nhất cho mỗi tài liệu:

Thí dụ

Chèn ba bản ghi trong bảng "sản phẩm", với _idcác trường đượ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();
  });
});

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ẽ cung cấp 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 ]
}