MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB - Tạo tài liệu

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 false , MongoDB sẽ thực hiện chèn không theo thứ tự và nếu xảy ra lỗi với một trong các tài liệu, các tài liệu còn lại trong mảng sẽ tiếp tục được xử lý.

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")
	]
}

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB trên máy Windows 7:Không thể thực hiện kết nối

  2. Cập nhật số lượng lớn các bản ghi trong một bộ sưu tập

  3. Sự khác biệt giữa save và insert trong Mongo DB là gì?

  4. Truy vấn sau khi điền trong Mongoose

  5. MongoDB - Đối số cho $ size phải là một Mảng, nhưng thuộc loại:EOO / thiếu