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

5 cách để chèn tài liệu trong MongoDB

MongoDB cung cấp nhiều cách để chèn tài liệu vào một bộ sưu tập.

Dưới đây là 5 cách để chèn tài liệu vào bộ sưu tập khi sử dụng mongo shell.

insertOne() Phương pháp

insertOne() phương thức chèn một tài liệu duy nhất vào một bộ sưu tập.

Tên đầy đủ của nó là db.collection.insertOne() , nơi collection là tên của bộ sưu tập để chèn tài liệu vào.

Dưới đây là ví dụ về việc chèn tài liệu vào bộ sưu tập có tên là pets :

db.pets.insertOne( { 
    name: "Scratch", 
    type: "Cat" 
    } )

Kết quả:

{
	"acknowledged" : true,
	"insertedId" : ObjectId("5fe2d15637b49e0faf1af214")
}

db.collection.insertOne() phương thức trả về một tài liệu chứa:

  • Một boolean acknowledged dưới dạng true nếu hoạt động chạy với mối quan tâm về ghi hoặc false nếu mối quan tâm viết đã bị vô hiệu hóa.
  • Một trường insertedId với _id giá trị của tài liệu đã chèn.

insertMany() Phương pháp

insertMany() phương thức tương tự như insertOne() , ngoại trừ việc nó chèn nhiều tài liệu vào một bộ sưu tập.

Cũng theo kiểu tương tự với insertOne() , tên đầy đủ của nó là db.collection.insertMany() , nơi collection là tên của bộ sưu tập để chèn tài liệu vào. Điều này áp dụng cho tất cả các phương pháp được liệt kê trong bài viết này.

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

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

Kết quả:

{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3 ] } 

db.collection.insertMany() phương thức trả về một tài liệu chứa:

  • Một boolean acknowledged dưới dạng true nếu hoạt động chạy với mối quan tâm về ghi hoặc false nếu mối quan tâm viết đã bị vô hiệu hóa.
  • Một mảng _id giá trị cho mỗi tài liệu được chèn thành công.

insert() Phương pháp

insert() phương thức giống như sự kết hợp của insertOne()insertMany() . Nó cho phép bạn chèn một tài liệu hoặc nhiều tài liệu vào một bộ sưu tập.

Đây là một ví dụ về việc sử dụng db.collection.insert() để chèn một tài liệu:

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

Kết quả:

WriteResult({ "nInserted" : 1 })

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

Đây là một ví dụ về việc sử dụng db.collection.insert() để chèn nhiều tài liệu.

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

Như đã đề cập, một BulkWriteResult đối tượng được trả về khi chèn một mảng tài liệu.

bulkWrite() Phương pháp

bulkWrite() phương pháp này cho phép bạn thực hiện các thao tác ghi hàng loạt.

Trên thực tế, insertMany() đã thực hiện các hoạt động chèn hàng loạt. Tương tự với insert() khi chèn một mảng tài liệu. Nhưng bulkWrite() cho phép bạn thực hiện các thao tác chèn, cập nhật và loại bỏ hàng loạt, tất cả chỉ từ một lệnh gọi phương thức.

Ví dụ:

db.pets.bulkWrite([
    { insertOne: { "document": { "_id": 1, "name": "Bubbles", "type": "Fish" }}},
    { insertOne: { "document": { "_id": 2, "name": "Wag", "type": "Dog" }}},
    { updateOne : {
        "filter" : { "_id" : 3 },
        "update" : { $set : { "name" : "Fluffy", "type" : "Cat" } },
        "upsert" : true
    } },
    { replaceOne : {
        "filter" : { "_id" : 4 },
        "replacement" : { "name" : "Bite", "type" : "Dog", "weight": 5 },
        "upsert" : true
    } }
])

Kết quả:

{
	"acknowledged" : true,
	"deletedCount" : 0,
	"insertedCount" : 2,
	"matchedCount" : 0,
	"upsertedCount" : 2,
	"insertedIds" : {
		"0" : 1,
		"1" : 2
	},
	"upsertedIds" : {
		"2" : 3,
		"3" : 4
	}
}

Trong trường hợp này, bộ sưu tập không thực sự tồn tại (tôi đã loại bỏ nó sau ví dụ trước) và do đó, các tài liệu duy nhất hiện có trong bộ sưu tập là những tài liệu được chỉ định trong ví dụ này.

Hãy xem bộ sưu tập.

db.pets.find()

Kết quả:

{ "_id" : 1, "name" : "Bubbles", "type" : "Fish" }
{ "_id" : 2, "name" : "Wag", "type" : "Dog" }
{ "_id" : 3, "name" : "Fluffy", "type" : "Cat" }
{ "_id" : 4, "name" : "Bite", "type" : "Dog", "weight" : 5 }

Như mong đợi, tất cả bốn tài liệu đã được chèn.

Hoạt động nâng cấp

Điều này đưa chúng ta đến phương pháp thứ năm để chèn tài liệu vào một bộ sưu tập trong MongoDB - thao tác upert.

Đây là một phương pháp có điều kiện để chèn tài liệu. Nâng cấp là một tùy chọn mà bạn có thể sử dụng trên các hoạt động cập nhật. Nó chỉ chèn một tài liệu mới nếu tài liệu được chỉ định chưa tồn tại. Nếu nó tồn tại, thì tài liệu gốc sẽ được cập nhật (và không có tài liệu nào được chèn vào).

Chúng tôi đã thấy các ví dụ về cảnh báo. Trong ví dụ trước, chúng tôi đã chỉ định "upsert" : true khi thực hiện updateOnereplaceOne các hoạt động. Điều đó dẫn đến việc chèn hai tài liệu vì bộ sưu tập không chứa tài liệu nào phù hợp với tiêu chí lọc của chúng.

Đây là một ví dụ khác về sự nâng cao. Lần này, chúng tôi sẽ sử dụng nó trên updateOne() phương pháp.

db.pets.updateOne( 
    { name: "Harry" },
    { $set: { type: "Hamster" } },
    { upsert: true }
    )

Kết quả:

{
	"acknowledged" : true,
	"matchedCount" : 0,
	"modifiedCount" : 0,
	"upsertedId" : ObjectId("5fe3dc44d991410169410524")
}

Ở đây, chúng tôi muốn đặt tất cả những con vật cưng được gọi là Harry trở thành một chú chuột lang. Nhưng không có vật nuôi nào được gọi là harry, vì vậy một cảnh báo đã được thực hiện.

Các phương thức sau chấp nhận upsert tham số:

  • update()
  • updateOne()
  • updateMany()
  • findAndModify()
  • findOneAndUpdate()
  • findOneAndReplace()

Do đó, khi upsert: true được chỉ định, các phương thức này sẽ thực hiện thao tác nâng cấp khi chúng cố gắng cập nhật một tài liệu không tồn tại.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. rmongodb:sử dụng $ hoặc trong truy vấn

  2. Làm thế nào để thực hiện một Order By dựa trên giá trị trong MongoDB?

  3. Giám sát cơ sở dữ liệu không cần tác nhân với ClusterControl

  4. Làm cách nào để đổi tên các trường khi thực hiện tìm kiếm / chiếu trong MongoDB?

  5. Làm cách nào để tạo một ObjectId với mongoose?