Khi sử dụng, bạn sẽ dành phần lớn thời gian để quản lý 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 các 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ột tài liệu MongoDB.
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 yêu cầu theo mặc định, các tài liệu trong một bộ sưu tập có thể chứa 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 [_______0_______5] 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à 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"]
}
]
]
use school
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
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
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"]
}
]
]
BulkWriteResult[{
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
}]
Vì chúng tôi đã thực hiện một số lượng lớn, 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 đâ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"]
}
]
]
Mặc dù phương pháp
5 linh hoạt, nhưng nó đã không được dùng trong nhiều trình điều khiển MongoDB để ủng hộ hai phương pháp 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
1
BulkWriteResult[{
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
}]
Phương pháp
1 có thể được sử dụng để chèn một tài liệu. Không giống như phương pháp
BulkWriteResult[{
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
}]
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"]
}
]
]
db.students.insertOne[
{
first_name: "Naomi",
last_name: "Pyani"
}
]
{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
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"]
}
]
]
1 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
BulkWriteResult[{
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
}]
Sử dụng phương pháp
7
BulkWriteResult[{
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
}]
Để 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
7 hiện được khuyến nghị. Giống như khi chèn nhiều tài liệu với
BulkWriteResult[{
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
}]
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"]
}
]
]
7 sẽ lấy một mảng tài liệu
BulkWriteResult[{
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
}]
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
1,
BulkWriteResult[{
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
}]
7 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 gán cho các tài liệu được chèn vào
BulkWriteResult[{
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
}]
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
3 trên bộ sưu tập được đề cập
db.students.insertOne[
{
first_name: "Naomi",
last_name: "Pyani"
}
]
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"]
}
]
]
3 mà không có đối số
db.students.insertOne[
{
first_name: "Naomi",
last_name: "Pyani"
}
]
0
use school
1
use school
Để làm cho đầu ra dễ đọc hơn, bạn cũng có thể xâu chuỗi phương thức
6 sau
db.students.insertOne[
{
first_name: "Naomi",
last_name: "Pyani"
}
]
3
db.students.insertOne[
{
first_name: "Naomi",
last_name: "Pyani"
}
]
2_______10_______3
use school
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 }]
4
use school
5
use school
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ó
0. 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{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
1. 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{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
2. 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{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
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
3. Đặ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{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
- cú pháp.
4{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
- cú pháp.
5. Tăng giá trị của trường theo số lượng đã đặt{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
- cú pháp.
6{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
- cú pháp.
7. 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{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
- cú pháp.
8{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
- cú pháp.
9. 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{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
- cú pháp.
0db.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"
}
]
]
- cú pháp.
1. Cập nhật giá trị của trường bằng cách nhân nó với số đã chodb.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"
}
]
]
- cú pháp.
2db.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"
}
]
]
- cú pháp.
3. Đổi tên tên trường thành mã định danh mớidb.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"
}
]
]
- cú pháp.
4db.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"
}
]
]
- cú pháp.
5. Thay thế giá trị của một trường bằng giá trị đã chodb.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"
}
]
]
- cú pháp.
6db.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"
}
]
]
- cú pháp.
7. 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ácdb.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"
}
]
]
- cú pháp.
8db.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"
}
]
]
- cú pháp.
9. Xóa một trường khỏi tài liệudb.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"
}
]
]
- cú pháp.
0{
"acknowledged" : true,
"insertedIds" : [
ObjectId["60e8792d4655cbf49ff7cb87"],
ObjectId["60e8792d4655cbf49ff7cb88"],
ObjectId["60e8792d4655cbf49ff7cb89"]
]
}
- cú pháp.
1. Trình giữ chỗ cho phần tử mảng đầu tiên thỏa mãn truy vấn{
"acknowledged" : true,
"insertedIds" : [
ObjectId["60e8792d4655cbf49ff7cb87"],
ObjectId["60e8792d4655cbf49ff7cb88"],
ObjectId["60e8792d4655cbf49ff7cb89"]
]
}
- cú pháp.
2{
"acknowledged" : true,
"insertedIds" : [
ObjectId["60e8792d4655cbf49ff7cb87"],
ObjectId["60e8792d4655cbf49ff7cb88"],
ObjectId["60e8792d4655cbf49ff7cb89"]
]
}
- cú pháp.
3. Trình giữ chỗ cho tất cả các phần tử mảng đáp ứng truy vấn{
"acknowledged" : true,
"insertedIds" : [
ObjectId["60e8792d4655cbf49ff7cb87"],
ObjectId["60e8792d4655cbf49ff7cb88"],
ObjectId["60e8792d4655cbf49ff7cb89"]
]
}
- cú pháp.
4{
"acknowledged" : true,
"insertedIds" : [
ObjectId["60e8792d4655cbf49ff7cb87"],
ObjectId["60e8792d4655cbf49ff7cb88"],
ObjectId["60e8792d4655cbf49ff7cb89"]
]
}
- cú pháp.
5. Thêm các giá trị vào mảng trừ khi chúng đã có sẵn{
"acknowledged" : true,
"insertedIds" : [
ObjectId["60e8792d4655cbf49ff7cb87"],
ObjectId["60e8792d4655cbf49ff7cb88"],
ObjectId["60e8792d4655cbf49ff7cb89"]
]
}
- cú pháp.
6{
"acknowledged" : true,
"insertedIds" : [
ObjectId["60e8792d4655cbf49ff7cb87"],
ObjectId["60e8792d4655cbf49ff7cb88"],
ObjectId["60e8792d4655cbf49ff7cb89"]
]
}
- cú pháp.
7. Loại bỏ phần tử đầu tiên hoặc cuối cùng của một mảng{
"acknowledged" : true,
"insertedIds" : [
ObjectId["60e8792d4655cbf49ff7cb87"],
ObjectId["60e8792d4655cbf49ff7cb88"],
ObjectId["60e8792d4655cbf49ff7cb89"]
]
}
- cú pháp.
8{
"acknowledged" : true,
"insertedIds" : [
ObjectId["60e8792d4655cbf49ff7cb87"],
ObjectId["60e8792d4655cbf49ff7cb88"],
ObjectId["60e8792d4655cbf49ff7cb89"]
]
}
- cú pháp.
9. 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{
"acknowledged" : true,
"insertedIds" : [
ObjectId["60e8792d4655cbf49ff7cb87"],
ObjectId["60e8792d4655cbf49ff7cb88"],
ObjectId["60e8792d4655cbf49ff7cb89"]
]
}
- cú pháp.
00use school
- cú pháp.
01. Nối một giá trị vào một mảnguse school
- cú pháp.
02use school
- cú pháp.
03. Xóa tất cả các phần tử đã chỉ định khỏi một mảnguse school
- cú pháp.
04use school
- cú pháp.
05. Sửa đổi các toán tửuse school
5 và{
"acknowledged" : true,
"insertedIds" : [
ObjectId["60e8792d4655cbf49ff7cb87"],
ObjectId["60e8792d4655cbf49ff7cb88"],
ObjectId["60e8792d4655cbf49ff7cb89"]
]
}
01 để 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ửuse school
- cú pháp.
08use school
- cú pháp.
09. Được sử dụng vớiuse school
05 và chỉ định vị trí mà toán tửuse school
01 nên chèn vàouse school
- cú pháp.
12use school
- cú pháp.
13. Được sử dụng vớiuse school
05 vàuse school
01 để giới hạn tổng số phần tử trong mảnguse school
- cú pháp.
16use school
- cú pháp.
17. Được sử dụng vớiuse school
05 vàuse school
01 để sắp xếp các phần tử mảnguse school
- cú pháp.
20use school
- 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
0 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
{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
Đố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 thức
0 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
{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
Đố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à
23. 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àouse school
24. 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 độnguse school
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 }]
26 thành một giá trị mới
use school
6_______10_______7
use school
Cập nhật nhiều tài liệu trong một bộ sưu tập
Phương thức
1 của MongoDB hoạt động tương tự như phương thức
{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
0, 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
{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
Cú pháp
1 tuân theo chính xác cú pháp
{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
0, vì vậy điểm khác biệt duy nhất là phạm vi hoạt động
{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
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
31 trong tài liệu sưu tập
use school
32 của chúng tôi, chúng tôi có thể sử dụng một cái gì đó như thế này
use school
8
use school
9
use school
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"
0_______14_______1
db.students.insert[
{
first_name: "Ashley",
last_name: "Jenkins",
dob: new Date["January 08, 2003"],
grade_level: 8
}
]
Thay thế một tài liệu
Phương pháp
2 hoạt động tương tự như phương pháp
{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
0, 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
{
"acknowledged" : true,
"insertedId" : ObjectId["60e877914655cbf49ff7cb86"]
}
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
2_______10_______7
db.students.insert[
{
first_name: "Ashley",
last_name: "Jenkins",
dob: new Date["January 08, 2003"],
grade_level: 8
}
]
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ó
0_______14_______5
db.students.insert[
{
first_name: "Ashley",
last_name: "Jenkins",
dob: new Date["January 08, 2003"],
grade_level: 8
}
]
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 các phương pháp
35 hoặc
use school
36. 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 đó.
use school
Đố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
35 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
use school
36 xóa mọi tài liệu phù hợp với điều kiện bộ lọc
use school
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 }]
6_______14_______7
db.students.insert[
{
first_name: "Ashley",
last_name: "Jenkins",
dob: new Date["January 08, 2003"],
grade_level: 8
}
]
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
36 để thay thế
use school
8
db.students.insert[
{
first_name: "Ashley",
last_name: "Jenkins",
dob: new Date["January 08, 2003"],
grade_level: 8
}
]
9
db.students.insert[
{
first_name: "Ashley",
last_name: "Jenkins",
dob: new Date["January 08, 2003"],
grade_level: 8
}
]
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
0______0_______1
use school
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 đó
41 —đượ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
use school
42
use school
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
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
35 hoặc
use school
36. 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 đó.
use school
Để 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ó tên cụ thể là
7
WriteResult[{ "nInserted" : 1 }]
6
db.students.insert[
{
first_name: "Ashley",
last_name: "Jenkins",
dob: new Date["January 08, 2003"],
grade_level: 8
}
]
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ự
8
db.students.insert[
{
first_name: "Ashley",
last_name: "Jenkins",
dob: new Date["January 08, 2003"],
grade_level: 8
}
]
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ố
Cụ thể, để nối thêm dữ liệu mới vào tài liệu, bạn có thể sử dụng phương thức
5. 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
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["60e8792d4655cbf49ff7cb87"],
ObjectId["60e8792d4655cbf49ff7cb88"],
ObjectId["60e8792d4655cbf49ff7cb89"]
]
}
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
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 .Chúng tôi có thể tham gia hai tài liệu trong MongoDB không?
Chúng ta có thể nối các tài liệu trên các bộ sưu tập trong MongoDB bằng cách sử dụng chức năng $lookup [Tổng hợp] . $lookup[Aggregation] tạo liên kết ngoài cùng bên trái với một tập hợp khác và giúp lọc dữ liệu khỏi dữ liệu đã hợp nhất.Giới hạn của một tài liệu trong MongoDB là gì?
Kích thước tối đa mà một tài liệu riêng lẻ có thể có trong MongoDB là 16 MB với độ sâu lồng nhau là 100 cấp độ . Biên tập. Không có kích thước tối đa cho một cơ sở dữ liệu MongoDB riêng lẻ.Làm cách nào để lưu trữ các tài liệu lồng nhau trong MongoDB?
Trong MongoDB, bạn có thể truy cập vào các trường tài liệu được lồng/nhúng của bộ sưu tập bằng cách sử dụng ký hiệu dấu chấm và khi bạn đang sử dụng ký hiệu dấu chấm, .