MongoDB cung cấp insert()
(và hai phương pháp khác) để thêm tài liệu vào cơ sở dữ liệu.
MongoDB cung cấp ba phương pháp sau để chèn tài liệu vào cơ sở dữ liệu:
-
insert()
-
insertOne()
-
insertMany()
insert()
Phương pháp
insert()
phương pháp chèn một hoặc nhiều tài liệu vào một bộ sưu tập. Mỗi tài liệu được cung cấp dưới dạng một tham số. Tên bộ sưu tập được thêm vào trước insert()
phương pháp.
Đây là cú pháp để chèn một tài liệu:
db.collectionName.insert({ name: "value" })
Trong ví dụ trên, tài liệu bao gồm { name: "value" }
. Đây là một tài liệu JSON. Tài liệu JSON bao gồm một hoặc nhiều cặp tên / giá trị, được đặt trong dấu ngoặc nhọn {}
.
MongoDB sử dụng tài liệu JSON để lưu trữ dữ liệu, vì vậy đó là lý do tại sao chúng tôi chèn tài liệu ở định dạng này.
Chúng tôi đã sử dụng phương pháp này trước đây khi chúng tôi tạo cơ sở dữ liệu.
Hãy thêm một tài liệu khác vào cơ sở dữ liệu của chúng tôi:
db.artists.insert({ artistname: "Jorn Lande" })
Thao tác này sẽ chèn một tài liệu có { artistname: "Jorn Lande" }
như nội dung của nó.
Bây giờ, nếu chúng ta tìm kiếm nghệ sĩ bộ sưu tập, chúng tôi sẽ thấy hai tài liệu (bao gồm cả tài liệu chúng tôi đã tạo trước đó):
> db.artists.find() { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
Lưu ý rằng MongoDB đã tạo một _id
trường cho các tài liệu. Nếu bạn không chỉ định một, MongoDB sẽ tạo một cho bạn. Tuy nhiên, bạn có thể cung cấp trường này khi thực hiện chèn nếu bạn muốn có quyền kiểm soát giá trị của _id
trường.
db.artists.insert({ _id: 1, artistname: "AC/DC" })
Kết quả:
> db.artists.find() { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : 1, "artistname" : "AC/DC" }
_id
mà MongoDB cung cấp là một giá trị ObjectId 12 byte. Nó được tạo thành từ các giá trị sau;
- giá trị 4 byte đại diện cho số giây kể từ kỷ nguyên Unix,
- mã định danh máy 3 byte,
- một id quy trình 2 byte và
- bộ đếm 3 byte, bắt đầu bằng một giá trị ngẫu nhiên.
Tạo nhiều tài liệu
Bạn có thể chèn nhiều tài liệu trong một insert()
phương pháp.
Trong ví dụ này, chúng tôi chèn ba tài liệu:
db.artists.insert( [ { artistname: "The Kooks" }, { artistname: "Bastille" }, { artistname: "Gang of Four" } ] )
Lưu ý rằng các tài liệu được cung cấp dưới dạng một mảng. Các tài liệu được đặt trong dấu ngoặc vuông []
và chúng được phân tách bằng dấu phẩy.
Chạy đoạn mã trên dẫn đến thông báo sau:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
Tài liệu được nhúng
Một tài liệu có thể chứa các tài liệu, mảng và mảng tài liệu khác.
Bạn cũng có thể cung cấp nhiều cặp tên / giá trị trong một tài liệu bằng cách phân tách chúng bằng dấu phẩy.
db.artists.insert({ artistname : "Deep Purple", albums : [ { album : "Machine Head", year : 1972, genre : "Rock" }, { album : "Stormbringer", year : 1974, genre : "Rock" } ] })
Kết quả:
WriteResult({ "nInserted" : 1 })
Tham số
insert()
phương thức chấp nhận các tham số sau.
Tham số | Loại | Mô tả |
---|---|---|
document | tài liệu hoặc mảng | Một tài liệu hoặc một mảng tài liệu để chèn vào bộ sưu tập (như trong các ví dụ trên). |
writeConcern | tài liệu | Tham số tùy chọn. Đây là một tài liệu bày tỏ mối quan tâm viết. Mối quan tâm về ghi mô tả mức độ xác nhận được yêu cầu từ MongoDB đối với các hoạt động ghi vào một mongod độc lập hoặc tới các tập hợp bản sao hoặc đến các cụm phân đoạn. |
ordered | boolean | Tham số tùy chọn. Nếu giá trị được đặt thành true , MongoDB sẽ thực hiện chèn theo thứ tự các tài liệu trong mảng và nếu xảy ra lỗi với một trong các tài liệu, MongoDB sẽ trả về mà không xử lý các tài liệu còn lại trong mảng.
Nếu giá trị được đặt thành |
insertOne()
Phương pháp
Bạn cũng có thể sử dụng insertOne()
phương pháp để chèn một tài liệu vào một bộ sưu tập:
db.musicians.insertOne({ _id: 1, name: "Ian Gillan", instrument: "Vocals" })
Ở đây, chúng tôi đã chỉ định một bộ sưu tập không tồn tại. Như với insert()
, bộ sưu tập đã chỉ định sẽ được tạo nếu nó chưa tồn tại.
Bạn sẽ nhận thấy rằng đầu ra khác với khi bạn sử dụng insert()
phương pháp:
{ "acknowledged" : true, "insertedId" : 1 }
Tài liệu được nhúng
Như với insert()
, bạn có thể chèn tài liệu nhúng và mảng tài liệu:
db.artists.insertOne({ artistname : "Miles Davis", albums : [ { album : "Kind of Blue", year : 1959, genre : "Jazz" }, { album : "Bitches Brew", year : 1970, genre : "Jazz" } ] })
Kết quả:
{ "acknowledged" : true, "insertedId" : ObjectId("578214f048ef8c6b3ffb0159") }
insertMany()
Phương pháp
Như tên cho thấy, bạn có thể sử dụng insertMany()
để chèn nhiều tài liệu:
db.musicians.insertMany( [ { _id: 2, name: "Ian Paice", instrument: "Drums", born: 1948 }, { _id: 3, name: "Roger Glover", instrument: "Bass", born: 1945 }, { _id: 4, name: "Steve Morse", instrument: "Guitar", born: 1954 }, { _id: 5, name: "Don Airey", instrument: "Keyboards", born: 1948 }, { _id: 6, name: "Jeff Martin", instrument: "Vocals", born: 1969 }, { _id: 7, name: "Jeff Burrows", instrument: "Drums", born: 1968 }, { _id: 8, name: "Stuart Chatwood", instrument: "Bass", born: 1969 }, ] )
Một lần nữa, kết quả đầu ra khi sử dụng insertMany()
khác với việc bạn chèn nhiều tài liệu bằng insert()
phương pháp:
{ "acknowledged" : true, "insertedIds" : [ 2, 3, 4, 5, 6, 7, 8 ] }
Tài liệu được nhúng
db.artists.insertMany( [ { artistname : "Robben Ford", albums : [ { album : "Bringing it Back Home", year : 2013, genre : "Blues" }, { album : "Talk to Your Daughter", year : 1988, genre : "Blues" } ] }, { artistname : "Snoop Dogg", albums : [ { album : "Tha Doggfather", year : 1996, genre : "Rap" }, { album : "Reincarnated", year : 2013, genre : "Reggae" } ] } ])
Kết quả:
{ "acknowledged" : true, "insertedIds" : [ ObjectId("578217c248ef8c6b3ffb015a"), ObjectId("578217c248ef8c6b3ffb015b") ] }