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 bớt các mục cũ, thì tài liệu vẫn là trung tâm của mô hình MongoDB
Trong hướng dẫn này, chúng tôi sẽ đề cập đến tài liệu MongoDB là gì và sau đó đề cập đến các hoạt động 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
LIÊN QUAN ĐẾN PRISMA. IO
Nếu bạn đang sử dụng MongoDB, hãy kiểm tra trình kết nối MongoDB của Prisma. Bạn có thể tự tin sử dụng Prisma Client để quản lý cơ sở dữ liệu MongoDB sản xuất
Để bắt đầu làm việc với MongoDB và Prisma, hãy xem hướng dẫn bắt đầu từ đầu của chúng tôi hoặc cách thêm vào một dự án hiện có
Prisma là bộ công cụ cơ sở dữ liệu mã nguồn mở dành cho Typescript và Node. js nhằm mục đích giúp các nhà phát triển ứng dụng làm việc hiệu quả và tự tin hơn khi làm việc với cơ sở dữ 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 bộ sưu tập không chỉ định một lược đồ bắt buộc theo mặc định, nên các tài liệu trong một bộ sưu tập có thể chứa một cấu trúc phức tạp tùy ý và không cần khớp với định dạng được sử dụng bởi các tài liệu anh chị em. Điều này mang lại sự linh hoạt đáng kinh ngạc và cho phép lược đồ phát triển một cách hữu cơ khi các yêu cầu của ứ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 loại dữ liệu được xác định có thể được truy vấn và vận hành theo chương trình
Các tài liệu BSON được biểu thị bằng một cặp dấu ngoặc nhọn [_______05] 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 có trước và được biểu thị bằng một chuỗi. Giá trị có thể là bất kỳ loại dữ liệu BSON hợp lệ nào. Dấu hai chấm [
6] ngăn cách trường vớ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
WriteResult[{ "nInserted" : 1 }]
Ví dụ, đây là một tài liệu BSON hợp lệ mà MongoDB có thể hiểu được
{
_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
7 là một số nguyênWriteResult[{ "nInserted" : 1 }]
8 vàWriteResult[{ "nInserted" : 1 }]
9 là các chuỗiWriteResult[{ "nInserted" : 1 }]
0 là một phaodb.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"]
}
]
]
1 là một mảng các chuỗidb.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"]
}
]
]
2 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 booleandb.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"]
}
]
]
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 vào dễ dàng, các tài liệu có thể được nhúng vào nhau và độ phức tạp về cấu trúc khớp chính xác với dữ liệu đượ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 cơ sở dữ liệu
3 cho mục đích trình diễn trong bài viết này
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"]
}
]
]
0
WriteResult[{ "nInserted" : 1 }]
Bạn cũng sẽ muốn chọn bộ sưu tập nơi 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ột cách rõ ràng nơi bạn muốn chèn tài liệu. 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 bộ sưu tập có tên là
4
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"]
}
]
]
Bây giờ bạn đã biết nơi tài liệu sẽ được lưu trữ, bạn có thể chèn một tài liệu mới bằng một trong các phương pháp sau
Sử dụng phương pháp
5
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"]
}
]
]
Phương thức
5 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
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"]
}
]
]
Để chèn một tài liệu, hãy chuyển tài liệu cho phương thức bằng cách gọi nó trên bộ sưu tập. Ở đây, chúng tôi chèn một tài liệu mới cho một sinh viên tên Ashley
4
WriteResult[{ "nInserted" : 1 }]
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
5, hãy chuyể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 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"]
}
]
]
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"]
}
]
]
8
WriteResult[{ "nInserted" : 1 }]
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à một
8 thay vì đối tượng
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"]
}
]
]
9 mà chúng tôi đã thấy trước đó
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"]
}
]
]
Mặc dù phương thức
5 linh hoạt nhưng nó không được dùng trong nhiều trình điều khiển MongoDB để thay thế cho hai phương thức sau
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"]
}
]
]
Sử dụng phương pháp
81
WriteResult[{ "nInserted" : 1 }]
Phương pháp
81 có thể được sử dụng để chèn một tài liệu. Không giống như phương pháp
WriteResult[{ "nInserted" : 1 }]
5, 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
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"]
}
]
]
Cú pháp giống như khi bạn sử dụng
5 để thêm một tài liệu. Chúng ta có thể thêm một sinh viên tên là Naomi
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"]
}
]
]
6
{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
7
{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
Không giống như với
5, phương thức
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"]
}
]
]
81 trả về một tài liệu chứa một số thông tin hữu ích bổ sung. Nó xác nhận rằng ghi đã được cụm xác 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 ID
WriteResult[{ "nInserted" : 1 }]
Sử dụng phương pháp
87
WriteResult[{ "nInserted" : 1 }]
Để bao gồm 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, phương pháp
87 hiện được khuyến nghị. Giống như khi chèn nhiều tài liệu với
WriteResult[{ "nInserted" : 1 }]
5,
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"]
}
]
]
87 sẽ lấy một mảng tài liệu
WriteResult[{ "nInserted" : 1 }]
Chúng tôi có thể thêm ba sinh viên mới tên là Jasmine, Michael và Toni
4
WriteResult[{ "nInserted" : 1 }]
5
WriteResult[{ "nInserted" : 1 }]
Như với
81,
WriteResult[{ "nInserted" : 1 }]
87 trả về một tài liệu thừa nhận việc ghi và cung cấp một mảng chứa các ID đã được gán cho các tài liệu được chèn vào
WriteResult[{ "nInserted" : 1 }]
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 đảm bảo có bài viết riêng. Bạn có thể tìm thấy chi tiết về cách xây dựng cá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ù các 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ể trình bày các phương thức 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 phương thức
63 trên bộ sưu tập được đề cập
{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
Chẳng hạn, để thu thập tất cả các tài liệu từ
4, bạn có thể gọi
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"]
}
]
]
63 mà không có đối số
{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
00
WriteResult[{ "nInserted" : 1 }]
01
WriteResult[{ "nInserted" : 1 }]
Để làm cho đầu ra dễ đọc hơn, bạn cũng có thể xâu chuỗi phương thức
66 sau
{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
63
{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
02
WriteResult[{ "nInserted" : 1 }]
03
WriteResult[{ "nInserted" : 1 }]
Bạn có thể thấy rằng một trường
7 đã được thêm vào mỗi tài liệu. MongoDB yêu cầu một
WriteResult[{ "nInserted" : 1 }]
7 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
WriteResult[{ "nInserted" : 1 }]
04
WriteResult[{ "nInserted" : 1 }]
05
WriteResult[{ "nInserted" : 1 }]
Bạn có thể tìm hiểu thêm về các cách truy vấn dữ liệu khác nhau với bài viết được liên kết ở trên
Cách cập nhật 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 một giá trị mới hoặc bạn có thể cần thêm thông tin bổ sung vào một 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ó
70. 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{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
71. 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{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
72. Thay thế toàn bộ tài liệu trong bộ sưu tập dựa trên bộ lọc được cung cấp{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
Chúng tôi sẽ đề cập đến 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
73. Đặt giá trị của trường thành ngày hiện tại, dưới dạng ngày hoặc loại dấu thời gian{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
- cú pháp.
74{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
- cú pháp.
75. Tăng giá trị của trường theo số lượng đã đặt{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
- cú pháp.
76{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
- cú pháp.
77. 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{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
- cú pháp.
78{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
- cú pháp.
79. 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{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
- cú pháp.
40WriteResult[{ "nInserted" : 1 }]
- cú pháp.
41. Cập nhật giá trị của trường bằng cách nhân nó với số đã choWriteResult[{ "nInserted" : 1 }]
- cú pháp.
42WriteResult[{ "nInserted" : 1 }]
- cú pháp.
43. Đổi tên tên trường thành mã định danh mớiWriteResult[{ "nInserted" : 1 }]
- cú pháp.
44WriteResult[{ "nInserted" : 1 }]
- cú pháp.
45. Thay thế giá trị của một trường bằng giá trị đã choWriteResult[{ "nInserted" : 1 }]
- cú pháp.
46WriteResult[{ "nInserted" : 1 }]
- cú pháp.
47. Trong các hoạt động upsert, đặ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ácWriteResult[{ "nInserted" : 1 }]
- cú pháp.
48WriteResult[{ "nInserted" : 1 }]
- cú pháp.
49. Xóa một trường khỏi tài liệuWriteResult[{ "nInserted" : 1 }]
- cú pháp.
50WriteResult[{ "nInserted" : 1 }]
- cú pháp.
51. Trình giữ chỗ cho phần tử mảng đầu tiên thỏa mãn truy vấnWriteResult[{ "nInserted" : 1 }]
- cú pháp.
52WriteResult[{ "nInserted" : 1 }]
- cú pháp.
53. Trình giữ chỗ cho tất cả các phần tử mảng đáp ứng truy vấnWriteResult[{ "nInserted" : 1 }]
- cú pháp.
54WriteResult[{ "nInserted" : 1 }]
- cú pháp.
55. Thêm các giá trị vào mảng trừ khi chúng đã có sẵnWriteResult[{ "nInserted" : 1 }]
- cú pháp.
56WriteResult[{ "nInserted" : 1 }]
- cú pháp.
57. Loại bỏ phần tử đầu tiên hoặc cuối cùng của một mảngWriteResult[{ "nInserted" : 1 }]
- cú pháp.
58WriteResult[{ "nInserted" : 1 }]
- cú pháp.
59. 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ệnWriteResult[{ "nInserted" : 1 }]
- cú pháp.
000WriteResult[{ "nInserted" : 1 }]
- cú pháp.
001. Nối một giá trị vào một mảngWriteResult[{ "nInserted" : 1 }]
- cú pháp.
002WriteResult[{ "nInserted" : 1 }]
- cú pháp.
003. Xóa tất cả các phần tử đã chỉ định khỏi một mảngWriteResult[{ "nInserted" : 1 }]
- cú pháp.
004WriteResult[{ "nInserted" : 1 }]
- cú pháp.
005. Sửa đổi các toán tửWriteResult[{ "nInserted" : 1 }]
55 vàWriteResult[{ "nInserted" : 1 }]
001 để chúng thêm từng phần tử của một mảng thay vì một mảng dưới dạng một phần tửWriteResult[{ "nInserted" : 1 }]
- cú pháp.
008WriteResult[{ "nInserted" : 1 }]
- cú pháp.
009. Được sử dụng vớiWriteResult[{ "nInserted" : 1 }]
005 và chỉ định vị trí mà toán tửWriteResult[{ "nInserted" : 1 }]
001 nên chèn vàoWriteResult[{ "nInserted" : 1 }]
- cú pháp.
012WriteResult[{ "nInserted" : 1 }]
- cú pháp.
013. Được sử dụng vớiWriteResult[{ "nInserted" : 1 }]
005 vàWriteResult[{ "nInserted" : 1 }]
001 để giới hạn tổng số phần tử trong mảngWriteResult[{ "nInserted" : 1 }]
- cú pháp.
016WriteResult[{ "nInserted" : 1 }]
- cú pháp.
017. Được sử dụng vớiWriteResult[{ "nInserted" : 1 }]
005 vàWriteResult[{ "nInserted" : 1 }]
001 để sắp xếp các phần tử mảngWriteResult[{ "nInserted" : 1 }]
- cú pháp.
020WriteResult[{ "nInserted" : 1 }]
- 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 của tài liệu theo nhiều cách khác nhau
Cập nhật một tài liệu duy nhất trong một bộ sưu tập
Phương pháp
70 của MongoDB đượ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 này có 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
{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
Đối số đầu tiên là 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. Vì phương pháp
70 sửa đổi nhiều nhất một tài liệu trong bộ sưu tập, nên tài liệu đầu tiên thỏa mãn các điều kiện lọc sẽ được sử dụng
{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
Đối số thứ hai chỉ định thao tác cập nhật sẽ được thực thi. Các hoạt động cập nhật được đưa ra ở trên có thể được chỉ định ở đâ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 nhiều 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à
023. Biến hoạt động thành thủ tục upsert 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àoWriteResult[{ "nInserted" : 1 }]
024. Một tài liệu xác định các quy tắc dành riêng cho ngôn ngữ sẽ áp dụng cho hoạt độngWriteResult[{ "nInserted" : 1 }]
Ví dụ: chúng tôi có thể cập nhật một bản ghi học sinh mà chúng tôi lọc theo trường
7 để đảm bảo rằng chúng tôi nhắm mục tiêu đúng tài liệu. Chúng tôi có thể đặt
WriteResult[{ "nInserted" : 1 }]
026 thành một giá trị mới
WriteResult[{ "nInserted" : 1 }]
06
WriteResult[{ "nInserted" : 1 }]
07
WriteResult[{ "nInserted" : 1 }]
Cập nhật nhiều tài liệu trong một bộ sưu tập
Phương thức
71 của MongoDB hoạt động tương tự như phương thức
{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
70, nhưng thay vào đó cập nhật bất kỳ tài liệu nào khớp với bộ lọc đã cho thay vì dừng sau lần khớp đầu tiên
{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
Cú pháp
71 hoàn toàn tuân theo cú pháp
{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
70, vì vậy điểm khác biệt duy nhất là phạm vi hoạt động
{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
Ví dụ: nếu chúng tôi muốn thay đổi tất cả các trường hợp của "sáng tác" thành "viết" trong mảng
031 trong tài liệu bộ sưu tập
WriteResult[{ "nInserted" : 1 }]
032 của chúng tôi, chúng tôi có thể sử dụng một cái gì đó như thế này
WriteResult[{ "nInserted" : 1 }]
08
WriteResult[{ "nInserted" : 1 }]
09
WriteResult[{ "nInserted" : 1 }]
Nếu bạn kiểm tra các tài liệu, mỗi trường hợp "sáng tác" nên được thay thế bằng "viết"
40
WriteResult[{ "nInserted" : 1 }]
41
WriteResult[{ "nInserted" : 1 }]
Thay thế một tài liệu
Phương pháp
72 hoạt động tương tự như phương pháp
{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
70, nhưng thay thế toàn bộ tài liệu thay vì cập nhật từng trường riêng lẻ. Cú pháp giống như hai lệnh trước
{
_id: 80380,
vehicle_type: "car",
mileage: 7377.80,
color: "blue",
markets: [
"US",
"UK"
],
options: {
transmission: "automatic",
num_doors: 4,
power_windows: true
}
}
Ví dụ: nếu Nancy Smith rời trường 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, bạn có thể nhập nội dung sau
42
WriteResult[{ "nInserted" : 1 }]
07
WriteResult[{ "nInserted" : 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ó
40
WriteResult[{ "nInserted" : 1 }]
45
WriteResult[{ "nInserted" : 1 }]
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 phương pháp
035 hoặc
WriteResult[{ "nInserted" : 1 }]
036. 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 thao tác trên đó.
WriteResult[{ "nInserted" : 1 }]
Đố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. Phương thức
035 sẽ xóa tối đa một tài liệu [bất kể bộ lọc tạo ra bao nhiêu kết quả phù hợp] trong khi phương thức
WriteResult[{ "nInserted" : 1 }]
036 xóa mọi tài liệu phù hợp với điều kiện bộ lọc
WriteResult[{ "nInserted" : 1 }]
Ví dụ: để xóa một học sinh, bạn có thể cung cấp một
7 để khớp chúng một cách rõ ràng
WriteResult[{ "nInserted" : 1 }]
46____147
WriteResult[{ "nInserted" : 1 }]
Nếu chúng tôi muốn xóa bất kỳ học sinh nào không có cấp lớp được chỉ định, chúng tôi có thể sử dụng phương thức
036 để thay thế
WriteResult[{ "nInserted" : 1 }]
48
WriteResult[{ "nInserted" : 1 }]
49
WriteResult[{ "nInserted" : 1 }]
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 có một cấp lớp được chỉ định
00
WriteResult[{ "nInserted" : 1 }]
1
WriteResult[{ "nInserted" : 1 }]
Phần 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ả các tài liệu trong MongoDB hàng ngày. Làm quen với các phương pháp thu thập và tài liệu 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
LIÊN QUAN ĐẾN PRISMA. IO
Nếu bạn đang sử dụng MongoDB, hãy kiểm tra trình kết nối MongoDB của Prisma. Bạn có thể tự tin sử dụng Prisma Client để quản lý cơ sở dữ liệu MongoDB sản xuất
Để bắt đầu làm việc với MongoDB và Prisma, hãy xem hướng dẫn bắt đầu từ đầu của chúng tôi hoặc cách thêm vào một dự án hiện có
Prisma là bộ công cụ cơ sở dữ liệu mã nguồn mở dành cho Typescript và Node. js nhằm mục đích giúp các nhà phát triển ứng dụng làm việc hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu
Câu hỏi thường gặp
Tài liệu nhúng trong MongoDB là gì?
Một tài liệu được nhúng hoặc lồng trong MongoDB là một tài liệu chứa một tài liệu khác bên trong nó
Sau đây là một ví dụ về tài liệu được nhúng trong đó
041—được biểu thị là tài liệu phụ bằng dấu ngoặc nhọn bổ sung—có thể được truy cập bằng bản ghi
WriteResult[{ "nInserted" : 1 }]
042
WriteResult[{ "nInserted" : 1 }]
2
WriteResult[{ "nInserted" : 1 }]
Giới hạn kích thước tài liệu tối đa của MongoDB là gì?
Kích thước tài liệu tối đa trong MongoDB là 16 megabyte
Giới hạn này giúp đảm bảo rằng một tài liệu không thể sử dụng quá nhiều RAM hoặc quá nhiều băng thông trong quá trình truyền.
Để lưu trữ tài liệu lớn hơn 16mb, MongoDB cung cấp GridFS API
Làm cách nào để xóa tài liệu trong MongoDB?
Để xóa tài liệu, bạn có thể sử dụng phương pháp
035 hoặc
WriteResult[{ "nInserted" : 1 }]
036. 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 thao tác trên đó.
WriteResult[{ "nInserted" : 1 }]
Để xóa một tài liệu, cú pháp cơ bản sẽ như sau để xóa một tài liệu có
7 cụ thể
WriteResult[{ "nInserted" : 1 }]
46
WriteResult[{ "nInserted" : 1 }]
Và để xóa nhiều tài liệu phù hợp với một tiêu chí nhất định, cú pháp tương tự
48
WriteResult[{ "nInserted" : 1 }]
Làm cách nào để bạn thêm vào một tài liệu trong MongoDB?
Để sửa đổi tài liệu trong MongoDB, có một số phương pháp cập nhật liên quan
Cụ thể, để nối thêm dữ liệu mới vào tài liệu, bạn có thể sử dụng toán tử cập nhật
55. Toán tử này thêm các giá trị vào mảng của tài liệu trừ khi chúng đã có sẵn
WriteResult[{ "nInserted" : 1 }]
Làm cách nào để so sánh hai tài liệu trong MongoDB?
Không có phương pháp cụ thể để so sánh rõ ràng tài liệu này với tài liệu khác trong MongoDB. Nó có thể được thực hiện bằng cách định cấu hình một truy vấn so sánh sự bằng nhau giữa bất kỳ trường nào của tài liệu với các toán tử
So sánh cũng có thể được thực hiện bằng cách định cấu hình đường dẫn tổng hợp. Phương pháp này cho phép bạn tạo các giai đoạn
Làm cách nào để chèn mảng tài liệu trong MongoDB?
Tài liệu trong MongoDB là một cấu trúc dữ liệu với các đối tượng giống như JSON có các cặp trường và giá trị. Để chèn tài liệu vào bộ sưu tập MongoDB, chúng ta có thể sử dụng các phương thức khác nhau như insert[], insertOne[] và insertMany[] .Khi nào chúng ta nên nhúng một tài liệu vào một tài liệu khác trong MongoDB?
Tài liệu MongoDB được nhúng hoặc lồng nhau là một tài liệu bình thường được lồng bên trong một tài liệu khác trong bộ sưu tập MongoDB. Tài liệu được nhúng đặc biệt hữu ích khi tồn tại mối quan hệ một-nhiều giữa các tài liệu .Làm cách nào để chèn bản ghi trong MongoDB?
insert[] Trong MongoDB, phương thức insert[] chèn một hoặc nhiều tài liệu vào bộ sưu tập . Nó nhận hai tham số, tham số đầu tiên là tài liệu hoặc mảng của tài liệu mà chúng ta muốn chèn và các tham số còn lại là tùy chọn. Sử dụng phương pháp này, bạn cũng có thể tạo một bộ sưu tập bằng cách chèn tài liệu.Làm cách nào để cập nhật mảng đối tượng lồng nhau trong MongoDB?
Cập nhật mảng đối tượng lồng nhau .db. thu thập. .Toán tử $set thay thế giá trị của một trường bằng giá trị đã chỉ địnhThe filtered positional operator $[] identifies the array elements that match the arrayFilters conditions for an update operation..