Hàm
8 trong Mongoose có nhiều trường hợp sử dụng khác nhau. Bạn nên sử dụng
{field1: value, field1: value, .. }
9 để cập nhật tài liệu nếu có thể, nhưng có một số trường hợp bạn cần sử dụng
{field1: value, field1: value, .. }
8. Trong hướng dẫn này, bạn sẽ thấy cách sử dụng
{field1: value, field1: value, .. }
8 và tìm hiểu khi nào bạn cần sử dụng nó
{field1: value, field1: value, .. }
Như tên ngụ ý,
8 tìm tài liệu đầu tiên khớp với một
{field1: value, field1: value, .. }
3 nhất định, áp dụng một
{field1: value, field1: value, .. }
4 và trả lại tài liệu. Theo mặc định,
{field1: value, field1: value, .. }
8 trả về tài liệu như trước khi áp dụng
{field1: value, field1: value, .. }
4
{field1: value, field1: value, .. }
Bạn nên đặt tùy chọn
80 thành
{field1: value, field1: value, .. }
81 để trả lại tài liệu sau khi áp dụng
{field1: value, field1: value, .. }
4
{field1: value, field1: value, .. }
Mongoose's
8 hơi khác so với MongoDB Node. js của
{field1: value, field1: value, .. }
8 vì nó trả về chính tài liệu, không phải đối tượng kết quả
{field1: value, field1: value, .. }
Để thay thế cho tùy chọn
80, bạn cũng có thể sử dụng tùy chọn
{field1: value, field1: value, .. }
86.
{field1: value, field1: value, .. }
87 tương đương với
{field1: value, field1: value, .. }
88. Tùy chọn
{field1: value, field1: value, .. }
86 tồn tại để thống nhất với Nút MongoDB. js của trình điều khiển
{field1: value, field1: value, .. }
8, có tùy chọn tương tự
{field1: value, field1: value, .. }
Ngoại trừ một upert chưa được lập chỉ mục,
8 là nguyên tử. Điều đó có nghĩa là bạn có thể giả định rằng tài liệu không thay đổi giữa thời điểm MongoDB tìm thấy tài liệu và khi nó cập nhật tài liệu, trừ khi bạn đang thực hiện upsert
{field1: value, field1: value, .. }
Ví dụ: nếu bạn đang sử dụng
9 để cập nhật tài liệu, thì tài liệu đó có thể thay đổi trong MongoDB giữa khi bạn tải tài liệu bằng cách sử dụng
{field1: value, field1: value, .. }
93 và khi bạn lưu tài liệu bằng cách sử dụng
{field1: value, field1: value, .. }
9 như hiển thị bên dưới. Đối với nhiều trường hợp sử dụng, điều kiện chủng tộc
{field1: value, field1: value, .. }
9 không phải là vấn đề. Nhưng bạn có thể giải quyết vấn đề này với
{field1: value, field1: value, .. }
8 [hoặc các giao dịch] nếu bạn cần
{field1: value, field1: value, .. }
Sử dụng tùy chọn
97, bạn có thể sử dụng
{field1: value, field1: value, .. }
8 làm thao tác tìm và nâng cấp. Upsert hoạt động giống như một
{field1: value, field1: value, .. }
8 bình thường nếu nó tìm thấy một tài liệu phù hợp với
{field1: value, field1: value, .. }
3. Tuy nhiên, nếu không có tài liệu nào khớp với
{field1: value, field1: value, .. }
3, MongoDB sẽ chèn một tài liệu bằng cách kết hợp
{field1: value, field1: value, .. }
3 và
{field1: value, field1: value, .. }
4 như hình bên dưới
{field1: value, field1: value, .. }
Tùy chọn `rawResult`
Mongoose biến đổi kết quả của
8 theo mặc định. nó trả về tài liệu cập nhật. Điều đó gây khó khăn cho việc kiểm tra xem một tài liệu đã được cập nhật hay chưa. Để lấy tài liệu được cập nhật và kiểm tra xem MongoDB đã cập nhật tài liệu mới trong cùng một thao tác hay chưa, bạn có thể đặt cờ
{field1: value, field1: value, .. }
85 để khiến Mongoose trả về kết quả thô từ MongoDB
{field1: value, field1: value, .. }
Tóm lược. trong hướng dẫn này, bạn sẽ học cách sử dụng phương pháp MongoDB
2 để truy xuất một tài liệu từ một bộ sưu tập
{field1: value, field1: value, .. }
Giới thiệu về phương thức findOne[] của MongoDB
2 trả về một tài liệu duy nhất từ một bộ sưu tập thỏa mãn điều kiện đã chỉ định
{field1: value, field1: value, .. }
Phương thức
2 có cú pháp như sau
{field1: value, field1: value, .. }
Code language: CSS [css]
db.collection.findOne[query, projection]
2 chấp nhận hai đối số tùy chọn.
{field1: value, field1: value, .. }
6 và
{field1: value, field1: value, .. }
7
{field1: value, field1: value, .. }
6 là một tài liệu xác định các tiêu chí lựa chọn{field1: value, field1: value, .. }
7 là tài liệu chỉ định các trường trong tài liệu phù hợp mà bạn muốn trả về{field1: value, field1: value, .. }
Nếu bạn bỏ qua
6, thì
{field1: value, field1: value, .. }
2 sẽ trả về tài liệu đầu tiên trong bộ sưu tập theo thứ tự tự nhiên là thứ tự của tài liệu trên đĩa
{field1: value, field1: value, .. }
Nếu bạn không vượt qua đối số
7, thì
{field1: value, field1: value, .. }
2 sẽ bao gồm tất cả các trường trong tài liệu phù hợp
{field1: value, field1: value, .. }
Để chỉ định xem một trường có được đưa vào tài liệu được trả về hay không, bạn sử dụng định dạng sau
{field1: value, field1: value, .. }
Nếu
44 là
{field1: value, field1: value, .. }
45 hoặc
{field1: value, field1: value, .. }
46, MongoDB sẽ bao gồm trường này trong tài liệu được trả về. Trong trường hợp
{field1: value, field1: value, .. }
44 là
{field1: value, field1: value, .. }
48 hoặc
{field1: value, field1: value, .. }
49, MongoDB sẽ không bao gồm nó
{field1: value, field1: value, .. }
Theo mặc định, MongoDB luôn bao gồm trường
00 trong tài liệu được trả về. Để chặn nó, bạn cần chỉ định rõ ràng
{field1: value, field1: value, .. }
01 trong đối số
{field1: value, field1: value, .. }
7
{field1: value, field1: value, .. }
Nếu nhiều tài liệu thỏa mãn điều kiện
6, phương thức
{field1: value, field1: value, .. }
2 trả về tài liệu đầu tiên dựa trên thứ tự của tài liệu được lưu trữ trên bộ lưu trữ dữ liệu
{field1: value, field1: value, .. }
Lưu ý rằng có các dạng phép chiếu khác như phép chiếu mảng và phép chiếu tổng hợp không được đề cập trong hướng dẫn này
Ví dụ về phương thức findOne[] của MongoDB
Chúng tôi sẽ sử dụng bộ sưu tập
05 sau đây để trình diễn
{field1: value, field1: value, .. }
4
{field1: value, field1: value, .. }
1] Sử dụng phương thức findOne[] của MongoDB với đối số bằng 0
Ví dụ sau sử dụng phương pháp
2 để chọn tài liệu đầu tiên từ bộ sưu tập
{field1: value, field1: value, .. }
05
{field1: value, field1: value, .. }
0
{field1: value, field1: value, .. }
Câu lệnh trả về tất cả các trường của tài liệu phù hợp
0Code language: CSS [css]
db.collection.findOne[query, projection]
Lưu ý rằng bỏ qua
6 cũng giống như chuyển
{field1: value, field1: value, .. }
6 dưới dạng một tài liệu trống
{field1: value, field1: value, .. }
3Code language: CSS [css]
db.collection.findOne[query, projection]
2] Sử dụng phương thức findOne[] của MongoDB với bộ lọc
Câu lệnh sau sử dụng phương pháp
2 để tìm tài liệu có
{field1: value, field1: value, .. }
00 là 2
{field1: value, field1: value, .. }
6Code language: CSS [css]
db.collection.findOne[query, projection]
Nó trả về tất cả các trường của tài liệu với
00 2
{field1: value, field1: value, .. }
8Code language: CSS [css]
db.collection.findOne[query, projection]
3] Sử dụng phương thức findOne[] của MongoDB để chọn một số trường
Ví dụ sau sử dụng phương pháp
2 để tìm tài liệu với
{field1: value, field1: value, .. }
04. Và nó chỉ trả về các trườngCode language: CSS [css]
db.collection.findOne[query, projection]
00 và
{field1: value, field1: value, .. }
06 của tài liệu phù hợpCode language: CSS [css]
db.collection.findOne[query, projection]
3
{field1: value, field1: value, .. }
Truy vấn trả về tài liệu sau
4
{field1: value, field1: value, .. }
Như bạn có thể thấy rõ từ đầu ra, MongoDB bao gồm trường
00 trong tài liệu được trả về theo mặc định
{field1: value, field1: value, .. }
Để xóa hoàn toàn nó khỏi tài liệu được trả lại, bạn cần chỉ định rõ ràng
08 trong tài liệuCode language: CSS [css]
db.collection.findOne[query, projection]
7 như thế này
{field1: value, field1: value, .. }