Giới thiệu
Khi sử dụng MongoDB, bạn sẽ dành phần lớn thời gian để quản lý tài liệu theo cách này hay cách khác. Cho dù bạn đang tạo tài liệu mới và thêm chúng vào bộ sưu tập, truy xuất tài liệu, cập nhật dữ liệu hay cắt tỉa các mục cũ, tài liệu đều là trung tâm của mô hình MongoDB.
Trong hướng dẫn này, chúng tôi sẽ trình bày các tài liệu MongoDB là gì và sau đó trình bày các thao tác phổ biến mà bạn có thể sẽ cần biết để quản lý môi trường tập trung vào tài liệu.
Tài liệu MongoDB là gì?
Trong MongoDB, tất cả dữ liệu trong cơ sở dữ liệu và bộ sưu tập được lưu trữ trong tài liệu. Vì các tập hợp không chỉ định một lược đồ bắt buộc theo mặc định, các tài liệu trong một tập hợp có thể chứa một cấu trúc phức tạp tùy ý và không cần phải khớp với định dạng được sử dụng bởi các tài liệu anh em. Điều này cung cấp tính linh hoạt đáng kinh ngạc và cho phép lược đồ phát triển một cách tự nhiên khi các yêu cầu ứng dụng thay đổi.
Bản thân các tài liệu MongoDB sử dụng định dạng tuần tự hóa dữ liệu BSON, một biểu diễn nhị phân của Ký hiệu đối tượng JavaScript JSON. Điều này cung cấp một cấu trúc có tổ chức với các kiểu dữ liệu xác định có thể được truy vấn và vận hành theo chương trình.
Tài liệu BSON được biểu thị bằng một cặp dấu ngoặc nhọn ({}
) chứa các cặp khóa-giá trị. Trong BSON, các cặp dữ liệu này được gọi là trường và giá trị của nó . Trường đến trước và được biểu thị bằng một chuỗi. Giá trị có thể là bất kỳ kiểu dữ liệu BSON hợp lệ nào. Dấu hai chấm (:
) tách trường khỏi giá trị của nó. Dấu phẩy được sử dụng để phân tách từng trường và cặp giá trị với nhau.
Ví dụ:đây là tài liệu BSON hợp lệ mà MongoDB có thể hiểu:
{ _id: 80380, vehicle_type: "car", mileage: 7377.80, color: "blue", markets: [ "US", "UK" ], options: { transmission: "automatic", num_doors: 4, power_windows: true }}
Ở đây, chúng ta có thể thấy khá nhiều loại:
-
_id
là một số nguyên -
vehicle_type
vàcolor
là chuỗi -
mileage
là một cái phao -
markets
là một mảng các chuỗi -
options
chứa một tài liệu lồng nhau với các giá trị bao gồm một chuỗi, một số nguyên và một boolean
Do tính linh hoạt này, tài liệu là một phương tiện khá linh hoạt để lưu trữ dữ liệu. Các trường mới có thể được thêm dễ dàng, các tài liệu có thể được nhúng vào nhau và độ phức tạp của cấu trúc khớp chính xác với dữ liệu đang được lưu trữ.
Cách tạo tài liệu mới
Để tạo một tài liệu mới, hãy thay đổi cơ sở dữ liệu nơi bạn muốn lưu trữ tài liệu đã tạo. Chúng tôi sẽ sử dụng một school
cơ sở dữ liệu cho mục đích trình diễn trong bài viết này:
use school
Bạn cũng sẽ muốn chọn bộ sưu tập mà bạn muốn chèn tài liệu. Như với cơ sở dữ liệu, bạn không cần phải tạo bộ sưu tập mà bạn muốn chèn tài liệu một cách rõ ràng. MongoDB sẽ tự động tạo nó khi dữ liệu đầu tiên được ghi. Đối với ví dụ này, chúng tôi sẽ sử dụng một tập hợp có tên là students
.
Bây giờ bạn đã biết nơi tài liệu sẽ được lưu trữ, bạn có thể chèn tài liệu mới bằng một trong các phương pháp sau.
Sử dụng insert()
phương pháp
insert()
cho phép bạn chèn một hoặc nhiều tài liệu vào bộ sưu tập mà nó được gọi.
Để chèn một tài liệu, hãy chuyển tài liệu vào phương thức bằng cách gọi nó trên bộ sưu tập. Tại đây, chúng tôi chèn một tài liệu mới cho một sinh viên tên là Ashley:
db.students.insert( { first_name: "Ashley", last_name: "Jenkins", dob: new Date("January 08, 2003"), grade_level: 8 })
WriteResult({ "nInserted" : 1 })
Nếu bạn muốn chèn nhiều tài liệu cùng lúc, thay vì chuyển một tài liệu tới insert()
, truyền một mảng tài liệu. Chúng tôi có thể thêm hai tài liệu mới cho sinh viên có tên Brian và Leah:
db.students.insert( [ { first_name: "Brian", last_name: "McMantis", dob: new Date("September 18, 2010"), grade_level: 2 }, { first_name: "Leah", last_name: "Drake", dob: new Date("October 03, 2009") } ])
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ]})
Vì chúng tôi đã thực hiện thao tác ghi hàng loạt, giá trị trả về của chúng tôi là BulkWriteResult
thay vì WriteResult
đối tượng mà chúng ta đã thấy trước đây.
Trong khi insert()
phương thức này rất linh hoạt, nó đã không còn được chấp nhận trong nhiều trình điều khiển MongoDB vì hai phương pháp sau.
Sử dụng insertOne()
phương pháp
insertOne()
có thể được sử dụng để chèn một tài liệu duy nhất. Không giống như insert()
, nó chỉ có thể chèn một tài liệu tại một thời điểm, điều này làm cho hành vi của nó dễ đoán hơn một chút.
Cú pháp giống như khi bạn sử dụng insert()
để thêm một tài liệu. Chúng tôi có thể thêm một sinh viên khác tên Naomi:
db.students.insertOne( { first_name: "Naomi", last_name: "Pyani" })
{ "acknowledged" : true, "insertedId" : ObjectId("60e877914655cbf49ff7cb86")}
Không giống như với insert()
, insertOne()
phương thức trả về một tài liệu có chứa một số thông tin hữu ích bổ sung. Nó xác nhận rằng việc ghi đã được cụm công nhận và nó bao gồm ID đối tượng đã được gán cho tài liệu vì chúng tôi không cung cấp.
Sử dụng insertMany()
phương pháp
Để đề cập đến các tình huống mà bạn muốn chèn nhiều tài liệu cùng một lúc, insertMany()
phương pháp hiện được khuyến khích. Cũng giống như khi chèn nhiều tài liệu bằng insert()
, insertMany()
lấy một mảng tài liệu.
Chúng tôi có thể thêm ba sinh viên mới tên là Jasmine, Michael và Toni:
db.students.insertMany( [ { first_name: "Jasmine", last_name: "Took", dob: new Date("April 11, 2011") }, { first_name: "Michael", last_name: "Rodgers", dob: new Date("February 25, 2008"), grade_level: 6 }, { first_name: "Toni", last_name: "Fowler" } ])
{ "acknowledged" : true, "insertedIds" : [ ObjectId("60e8792d4655cbf49ff7cb87"), ObjectId("60e8792d4655cbf49ff7cb88"), ObjectId("60e8792d4655cbf49ff7cb89") ]}
Như với insertOne()
, insertMany()
trả về một tài liệu xác nhận việc ghi và cung cấp một mảng chứa các ID đã được chỉ định cho các tài liệu được chèn.
Cách truy vấn các tài liệu hiện có
Truy vấn tài liệu là một chủ đề khá rộng rãi đảm bảo cho bài viết của chính nó. Bạn có thể tìm thấy chi tiết về cách lập công thức truy vấn để truy xuất các loại tài liệu khác nhau trong hướng dẫn của chúng tôi về truy vấn dữ liệu trong MongoDB.
Mặc dù thông tin chi tiết tốt nhất nên để lại trong bài viết được liên kết ở trên, nhưng ít nhất chúng ta có thể đề cập đến các phương pháp mà MongoDB cung cấp để truy vấn tài liệu. Cách chính để tìm nạp tài liệu từ MongoDB là gọi find()
phương pháp trên bộ sưu tập được đề cập.
Ví dụ, để thu thập tất cả các tài liệu từ students
, bạn có thể gọi find()
không có đối số:
db.students.find()
{ "_id" : ObjectId("60e8743b4655cbf49ff7cb83"), "first_name" : "Ashley", "last_name" : "Jenkins", "dob" : ISODate("2003-01-08T00:00:00Z"), "grade_level" : 8 }{ "_id" : ObjectId("60e875d54655cbf49ff7cb84"), "first_name" : "Brian", "last_name" : "McMantis", "dob" : ISODate("2010-09-18T00:00:00Z"), "grade_level" : 2 }{ "_id" : ObjectId("60e875d54655cbf49ff7cb85"), "first_name" : "Leah", "last_name" : "Drake", "dob" : ISODate("2009-10-03T00:00:00Z") }{ "_id" : ObjectId("60e877914655cbf49ff7cb86"), "first_name" : "Naomi", "last_name" : "Pyani" }{ "_id" : ObjectId("60e8792d4655cbf49ff7cb87"), "first_name" : "Jasmine", "last_name" : "Took", "dob" : ISODate("2011-04-11T00:00:00Z") }{ "_id" : ObjectId("60e8792d4655cbf49ff7cb88"), "first_name" : "Michael", "last_name" : "Rodgers", "dob" : ISODate("2008-02-25T00:00:00Z"), "grade_level" : 6 }{ "_id" : ObjectId("60e8792d4655cbf49ff7cb89"), "first_name" : "Toni", "last_name" : "Fowler" }
Để làm cho đầu ra dễ đọc hơn, bạn cũng có thể chuỗi pretty()
phương thức sau find()
:
db.<collection>.find().pretty()
{ "_id" : ObjectId("60e8743b4655cbf49ff7cb83"), "first_name" : "Ashley", "last_name" : "Jenkins", "dob" : ISODate("2003-01-08T00:00:00Z"), "grade_level" : 8}{ "_id" : ObjectId("60e875d54655cbf49ff7cb84"), "first_name" : "Brian", "last_name" : "McMantis", "dob" : ISODate("2010-09-18T00:00:00Z"), "grade_level" : 2}{ "_id" : ObjectId("60e875d54655cbf49ff7cb85"), "first_name" : "Leah", "last_name" : "Drake", "dob" : ISODate("2009-10-03T00:00:00Z")}{ "_id" : ObjectId("60e877914655cbf49ff7cb86"), "first_name" : "Naomi", "last_name" : "Pyani"}{ "_id" : ObjectId("60e8792d4655cbf49ff7cb87"), "first_name" : "Jasmine", "last_name" : "Took", "dob" : ISODate("2011-04-11T00:00:00Z")}{ "_id" : ObjectId("60e8792d4655cbf49ff7cb88"), "first_name" : "Michael", "last_name" : "Rodgers", "dob" : ISODate("2008-02-25T00:00:00Z"), "grade_level" : 6}{ "_id" : ObjectId("60e8792d4655cbf49ff7cb89"), "first_name" : "Toni", "last_name" : "Fowler"}
Bạn có thể thấy rằng một _id
trường đã được thêm vào mỗi tài liệu. MongoDB yêu cầu một _id
duy nhất cho mỗi tài liệu trong một bộ sưu tập. Nếu bạn không cung cấp một cái khi tạo đối tượng, nó sẽ thêm một cái cho bạn. Bạn có thể sử dụng ID này để truy xuất một đối tượng một cách đáng tin cậy:
db.students.find( { _id : ObjectId("60e8792d4655cbf49ff7cb89") })
{ "_id" : ObjectId("60e8792d4655cbf49ff7cb89"), "first_name" : "Toni", "last_name" : "Fowler" }
Bạn có thể tìm hiểu thêm về các cách truy vấn dữ liệu khác nhau bằng bài viết được liên kết ở trên.
Cách cập nhật các tài liệu hiện có
Nhiều hoặc hầu hết các trường hợp sử dụng cho cơ sở dữ liệu yêu cầu bạn có thể sửa đổi dữ liệu hiện có trong cơ sở dữ liệu. Một trường có thể cần được cập nhật để phản ánh giá trị mới hoặc bạn có thể cần thêm thông tin bổ sung vào tài liệu hiện có khi nó có sẵn.
MongoDB sử dụng một số phương pháp liên quan để cập nhật các tài liệu hiện có:
-
updateOne()
:Cập nhật một tài liệu trong một bộ sưu tập dựa trên bộ lọc được cung cấp. -
updateMany()
:Cập nhật nhiều tài liệu trong một bộ sưu tập phù hợp với bộ lọc được cung cấp. -
replaceOne()
:Thay thế toàn bộ tài liệu trong một bộ sưu tập dựa trên bộ lọc được cung cấp.
Chúng tôi sẽ trình bày cách sử dụng từng loại này để thực hiện các loại cập nhật khác nhau.
Cập nhật toán tử
Trước khi xem xét từng phương pháp để cập nhật tài liệu, chúng ta nên xem qua một số toán tử cập nhật có sẵn.
-
$currentDate
:Đặt giá trị của trường thành ngày hiện tại, dưới dạng ngày tháng hoặc loại dấu thời gian.- Cú pháp:
{ $currentDate: { <field>: <type>, ... } }
- Cú pháp:
-
$inc
:Tăng giá trị của một trường lên một số tiền đã đặt.- Cú pháp:
{ $inc: { <field>: <amount>, ... } }
- Cú pháp:
-
$min
:Cập nhật giá trị của trường nếu giá trị được chỉ định nhỏ hơn giá trị hiện tại.- Cú pháp:
{ $min: { <field>: <value>, ... } }
- Cú pháp:
-
$max
:Cập nhật giá trị của trường nếu giá trị được chỉ định lớn hơn giá trị hiện tại.- Cú pháp:
{ $max: { <field>: <value>, ... } }
- Cú pháp:
-
$mul
:Cập nhật giá trị của trường bằng cách nhân nó với số đã cho.- Cú pháp:
{ $mul: { <field>: <value>, ... } }
- Cú pháp:
-
$rename
:Đổi tên trường thành số nhận dạng mới.- Cú pháp:
{ $rename: { <field>: <new_name>, ... } }
- Cú pháp:
-
$set
:Thay thế giá trị của một trường bằng giá trị đã cho.- Cú pháp:
{ $set: { <field>: value, ... } }
- Cú pháp:
-
$setOnInsert
:Trong các thao tác nâng cấp, hãy đặt giá trị của một trường nếu một tài liệu mới đang được tạo và không làm gì khác.- Cú pháp:
{ $setOnInsert: { <field>: <value>, ... } }
- Cú pháp:
-
$unset
:Xóa một trường khỏi tài liệu.- Cú pháp:
{ $unset: { <field>: "", ... } }
- Cú pháp:
-
$
:Trình giữ chỗ cho phần tử mảng đầu tiên đáp ứng truy vấn.- Cú pháp:
{ <update_operator>: {<array>.$: <value> } }
- Cú pháp:
-
$[]
:Trình giữ chỗ cho tất cả các phần tử mảng đáp ứng truy vấn.- Cú pháp:
{ <update_operator>: { <array>.$[]: <value> } }
- Cú pháp:
-
$addToSet
:Thêm các giá trị vào mảng trừ khi chúng đã có mặt.- Cú pháp:
{ $addToSet: { <field>: <value>, ... } }
- Cú pháp:
-
$pop
:Loại bỏ phần tử đầu tiên hoặc cuối cùng của một mảng.- Cú pháp:
{ $pop: { <field>: (-1 or 1), ... } }
- Cú pháp:
-
$pull
:Loại bỏ tất cả các phần tử của một mảng phù hợp với một điều kiện.- Cú pháp:
{ $pull: { <field>: <condition>, ... } }
- Cú pháp:
-
$push
:Thêm một giá trị vào một mảng.- Cú pháp:
{ $push: { <field>: <value>, ... } }
- Cú pháp:
-
$pullAll
:Loại bỏ tất cả các phần tử được chỉ định khỏi một mảng.- Cú pháp:
{ $pullAll: { <field>: [ <value>, ... ], ...} }
- Cú pháp:
-
$each
:Sửa đổi$addToSet
và$push
các toán tử để chúng thêm từng phần tử của một mảng thay vì một mảng như một phần tử duy nhất.- Cú pháp:
{ <update_operator>: { <field>: { $each: [ <value>, ... ] }, ... } }
- Cú pháp:
-
$position
:Được sử dụng với$each
và chỉ định vị trí$push
toán tử nên chèn tại.- Cú pháp:
{ $push: { <field>: { $each: [ <value>, ... ], $position: <num> } } }
- Cú pháp:
-
$slice
:Được sử dụng với$each
và$push
để giới hạn tổng số phần tử trong mảng.- Cú pháp:
{ $push: { <field>: { $each: [ <value>, ... ], $slice: <num> } } }
- Cú pháp:
-
$sort
:Được sử dụng với$each
và$push
để sắp xếp các phần tử của mảng.- Cú pháp:
{ $push: { <field>: { $each: [ <value>, ... ], $sort: <sort_order> } } }
- Cú pháp:
Các toán tử cập nhật khác nhau này cho phép bạn cập nhật các trường khác nhau trong tài liệu của mình theo những cách khác nhau.
Cập nhật một tài liệu trong một bộ sưu tập
MongoDB's updateOne()
được sử dụng để cập nhật một tài liệu trong một bộ sưu tập. Phương thức nhận hai đối số bắt buộc cũng như một tài liệu chỉ định các đối số tùy chọn.
Đối số đầu tiên là một tài liệu chỉ định các điều kiện lọc sẽ được sử dụng để chọn tài liệu. Kể từ updateOne()
phương thức sửa đổi nhiều nhất một tài liệu trong bộ sưu tập, tài liệu đầu tiên đáp ứng các điều kiện lọc sẽ được sử dụng.
Đối số thứ hai chỉ định thao tác cập nhật sẽ được thực thi. Các thao tác cập nhật được đưa ra ở trên có thể được chỉ định tại đây để thay đổi nội dung của tài liệu phù hợp.
Đối số thứ ba là một tài liệu gồm các tùy chọn khác nhau để sửa đổi hành vi của phương thức. Các giá trị tiềm năng quan trọng nhất là:
-
upsert
:Biến thao tác thành quy trình nâng cấp bằng cách chèn tài liệu mới nếu bộ lọc không khớp với bất kỳ tài liệu hiện có nào. -
collation
:Một tài liệu xác định các quy tắc theo ngôn ngữ cụ thể sẽ áp dụng cho hoạt động.
Ví dụ:chúng tôi có thể cập nhật một hồ sơ học sinh mà chúng tôi lọc theo _id
để đảm bảo rằng chúng tôi nhắm mục tiêu tài liệu chính xác. Chúng ta có thể đặt grade_level
sang một giá trị mới:
db.students.updateOne( { _id: ObjectId("60e8792d4655cbf49ff7cb89") }, { $set: { grade_level: 3 } })
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
Cập nhật nhiều tài liệu trong một bộ sưu tập
MongoDB's updateMany()
phương thức hoạt động tương tự như updateOne()
nhưng thay vào đó, cập nhật bất kỳ tài liệu nào phù hợp với bộ lọc đã cho thay vì dừng sau trận đấu đầu tiên.
updateMany()
cú pháp tuân theo chính xác updateOne()
cú pháp, vì vậy sự khác biệt duy nhất là phạm vi hoạt động.
Ví dụ:nếu chúng ta muốn thay đổi tất cả các trường hợp của "thành phần" thành "viết" trong subjects
mảng trong teachers
của chúng tôi tài liệu thu thập, chúng tôi có thể sử dụng một cái gì đó như thế này:
db.teachers.updateMany( { subject: "composition" }, { $set: { "subjects.$": "writing" } })
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
Nếu bạn kiểm tra các tài liệu, mỗi phiên bản của "thành phần" phải được thay thế bằng "văn bản":
db.teachers.find()
{ "_id" : ObjectId("60eddca65eb74f5c676f3baa"), "first_name" : "Nancy", "last_name" : "Smith", "subjects" : [ "vocabulary", "pronunciation" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bab"), "first_name" : "Ronald", "last_name" : "Taft", "subjects" : [ "literature", "grammar", "writing" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bac"), "first_name" : "Casey", "last_name" : "Meyers", "subjects" : [ "literature", "writing", "grammar" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bad"), "first_name" : "Rebecca", "last_name" : "Carrie", "subjects" : [ "grammar", "literature" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bae"), "first_name" : "Sophie", "last_name" : "Daggs", "subjects" : [ "literature", "writing", "grammar", "vocabulary", "pronunciation" ] }
Thay thế tài liệu
replaceOne()
phương thức hoạt động tương tự như updateOne()
nhưng thay thế toàn bộ tài liệu thay vì cập nhật các trường riêng lẻ. Cú pháp giống như hai lệnh trước.
Ví dụ:nếu Nancy Smith rời trường học của bạn và bạn thay thế cô ấy bằng một giáo viên tên là Clara Newman dạy văn học, bạn có thể nhập như sau:
db.teachers.replaceOne( { $and: [ { first_name: "Nancy" }, { last_name: "Smith" } ] }, { first_name: "Clara", last_name: "Newman", subjects: [ "literature" ] })
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
Bạn có thể thấy rằng tài liệu phù hợp đã bị xóa và tài liệu được chỉ định đã thay thế nó:
db.teachers.find()
{ "_id" : ObjectId("60eddca65eb74f5c676f3baa"), "first_name" : "Clara", "last_name" : "Newman", "subjects" : [ "literature" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bab"), "first_name" : "Ronald", "last_name" : "Taft", "subjects" : [ "literature", "grammar", "writing" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bac"), "first_name" : "Casey", "last_name" : "Meyers", "subjects" : [ "literature", "writing", "grammar" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bad"), "first_name" : "Rebecca", "last_name" : "Carrie", "subjects" : [ "grammar", "literature" ] }{ "_id" : ObjectId("60eddca65eb74f5c676f3bae"), "first_name" : "Sophie", "last_name" : "Daggs", "subjects" : [ "literature", "writing", "grammar", "vocabulary", "pronunciation" ] }
Cách xóa tài liệu
Xóa tài liệu khỏi bộ sưu tập cũng là một phần của vòng đời tài liệu. Để xóa tài liệu, bạn có thể sử dụng deleteOne()
hoặc deleteMany()
các phương pháp. Chúng có cùng một cú pháp và chỉ khác nhau về số lượng tài liệu mà chúng hoạt động trên đó.
Đối với hầu hết các phần, tất cả những gì bạn phải làm để xóa tài liệu bằng một trong hai phương pháp này là cung cấp cho nó một tài liệu bộ lọc chỉ định cách bạn muốn chọn tài liệu sẽ bị xóa. deleteOne()
phương thức sẽ xóa nhiều nhất một tài liệu (bất kể có bao nhiêu kết quả phù hợp mà bộ lọc tạo ra) trong khi deleteMany()
phương pháp xóa mọi tài liệu phù hợp với điều kiện bộ lọc.
Ví dụ:để xóa một sinh viên, bạn có thể cung cấp _id
để đối sánh chúng một cách rõ ràng:
db.students.deleteOne({ _id: ObjectId("60e8792d4655cbf49ff7cb87")})
{ "acknowledged" : true, "deletedCount" : 1 }
Nếu chúng tôi muốn xóa bất kỳ học sinh nào không được chỉ định cấp lớp, chúng tôi có thể sử dụng deleteMany()
thay vào đó:
db.students.deleteMany({ grade_level: { $eq: null }})
{ "acknowledged" : true, "deletedCount" : 2 }
Nếu chúng tôi kiểm tra, chúng tôi sẽ thấy rằng tất cả các học sinh còn lại đều có cấp lớp được ấn định:
db.students.find()
{ "_id" : ObjectId("60e8743b4655cbf49ff7cb83"), "first_name" : "Ashley", "last_name" : "Jenkins", "dob" : ISODate("2003-01-08T00:00:00Z"), "grade_level" : 8 }{ "_id" : ObjectId("60e875d54655cbf49ff7cb84"), "first_name" : "Brian", "last_name" : "McMantis", "dob" : ISODate("2010-09-18T00:00:00Z"), "grade_level" : 2 }{ "_id" : ObjectId("60e8792d4655cbf49ff7cb88"), "first_name" : "Michael", "last_name" : "Rodgers", "dob" : ISODate("2008-02-25T00:00:00Z"), "grade_level" : 6 }{ "_id" : ObjectId("60e8792d4655cbf49ff7cb89"), "first_name" : "Toni", "last_name" : "Fowler", "grade_level" : 3 }
Kết luận
Học cách tạo, truy vấn, cập nhật và xóa tài liệu cung cấp cho bạn các kỹ năng cần thiết để quản lý hiệu quả tài liệu trong MongoDB hàng ngày. Làm quen với các tài liệu và phương pháp thu thập khác nhau cũng như các toán tử cho phép bạn khớp và sửa đổi thông tin cho phép bạn thể hiện những suy nghĩ phức tạp mà hệ thống cơ sở dữ liệu có thể hiểu được.