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

MongoDB insert ()

Trong MongoDB, db.collection.insert() phương pháp chèn một tài liệu hoặc các tài liệu vào một bộ sưu tập.

Bộ sưu tập collection một phần là tên của bộ sưu tập để chèn / s tài liệu vào.

Ví dụ

Đây là một ví dụ về việc sử dụng db.collection.insert() để chèn nhiều tài liệu vào một bộ sưu tập được gọi là pets :

db.pets.insert([
    { _id: 1, name: "Wag", type: "Dog" },
    { _id: 2, name: "Bark", type: "Dog" },
    { _id: 3, name: "Meow", type: "Cat" }
    ])

Kết quả:

BulkWriteResult({
	"writeErrors" : [ ],
	"writeConcernErrors" : [ ],
	"nInserted" : 3,
	"nUpserted" : 0,
	"nMatched" : 0,
	"nModified" : 0,
	"nRemoved" : 0,
	"upserted" : [ ]
})

db.collection.insert() phương thức trả về một đối tượng có chứa trạng thái của hoạt động chèn.

Đối tượng được trả về phụ thuộc vào việc một tài liệu được chèn vào hay nhiều tài liệu.

  • Khi một tài liệu được chèn vào, nó sẽ trả về một WriteResult đối tượng.
  • Khi một mảng tài liệu được chèn vào, nó sẽ trả về một BulkWriteResult đối tượng.

Chúng ta có thể thấy rằng ví dụ trên trả về BulkWriteResult vật. Điều này là do chúng tôi đã thêm một mảng tài liệu. Nó sẽ làm được điều này ngay cả khi mảng chỉ chứa một phần tử.

Bây giờ nếu chúng ta sử dụng db.collection.find() để nhìn vào bộ sưu tập, chúng ta sẽ thấy các tài liệu mới được thêm vào.

db.pets.find()

Kết quả:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Trong trường hợp này, ba tài liệu của chúng tôi là những tài liệu duy nhất trong bộ sưu tập và vì vậy chỉ những tài liệu này được trả lại.

Tuy nhiên, nếu bộ sưu tập lớn, chúng tôi có thể sử dụng ID tài liệu để thu hẹp kết quả chỉ thành những tài liệu mà chúng tôi quan tâm.

db.pets.find({_id: {$in: [1,2,3]}})

Kết quả:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Điều gì sẽ xảy ra nếu Bộ sưu tập không tồn tại?

Nếu bộ sưu tập không tồn tại, bộ sưu tập sẽ được tạo và các tài liệu sẽ được thêm vào bộ sưu tập đó.

Nếu bộ sưu tập đã tồn tại, thì các tài liệu chỉ cần được thêm vào nó (miễn là _id của chúng các giá trị không xung đột với bất kỳ giá trị nào hiện có).

Khi tôi tạo ví dụ này, bộ sưu tập không tồn tại và do đó, thao tác chèn đã tạo ra nó.

_id Trường

_id trường là trường định danh duy nhất trong MongoDB.

Như đã trình bày trong ví dụ trước, bạn có thể cung cấp _id của riêng mình trường trong tài liệu. Nếu bạn làm vậy, thì giá trị của nó phải là duy nhất trong bộ sưu tập. Điều này là do _id của bạn trường sẽ được sử dụng làm mã định danh duy nhất của tài liệu.

Dưới đây là một ví dụ về việc chèn tài liệu mà không cần cung cấp _id các lĩnh vực.

db.pets.insert(
    { name: "Bruce", type: "Bat" }
    )

Kết quả:

WriteResult({ "nInserted" : 1 })

Lưu ý rằng trong trường hợp này, phương thức trả về WriteResult đối tượng thay vì BulkWriteResult vật. Điều này là do chúng tôi đã chèn một tài liệu (và nó không nằm trong một mảng).

Bây giờ chúng ta hãy nhìn lại bộ sưu tập.

db.pets.find()

Kết quả:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }
{ "_id" : ObjectId("5fe323d837b49e0faf1af218"), "name" : "Bruce", "type" : "Bat" }

Chúng tôi có thể thấy rằng tài liệu mới của chúng tôi được bao gồm trong bộ sưu tập và nó có _id trường có giá trị được tạo tự động.

ordered Tham số

db.collection.insert() phương thức cũng chấp nhận một ordered tham số. Đây là một tham số boolean với giá trị mặc định là true .

ordered tham số chỉ định xem thao tác chèn nên được sắp xếp theo thứ tự hay không có thứ tự.

Nếu ordered được đặt thành false , tài liệu được chèn ở định dạng không có thứ tự và có thể được sắp xếp lại bởi mongod để tăng hiệu suất.

Với các phần chèn có thứ tự, nếu lỗi xảy ra trong quá trình chèn một trong các tài liệu, MongoDB trả về lỗi mà không xử lý các tài liệu còn lại trong mảng.

Với các chèn không có thứ tự, nếu lỗi xảy ra trong quá trình chèn một trong các tài liệu, MongoDB sẽ tiếp tục chèn các tài liệu còn lại trong mảng.

Thông tin thêm

db.collection.insert() phương thức cũng chấp nhận một writeConcern đối số, mô tả mức xác nhận được yêu cầu từ MongoDB cho các hoạt động ghi.

Xem tài liệu MongoDB cho db.collection.insert() để biết thêm thông tin.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để thực hiện các truy vấn không phân biệt chữ hoa chữ thường trên Mongodb?

  2. MongoDB $ và Nhà điều hành đường ống tổng hợp

  3. Mongoose khác biệt giữa .save () và sử dụng update ()

  4. Làm thế nào để san phẳng một tài liệu con thành cấp gốc trong MongoDB?

  5. Các phương thức find () và findOne () trong MongoDB hiển thị các kết quả khác nhau